tasks.py
102 lines
| 2.9 KiB
| text/x-python
|
PythonLexer
|
r196 | from __future__ import absolute_import | |
r311 | from radarsys.celery import app | ||
|
r350 | from celery import Task | |
|
r253 | from datetime import timedelta, datetime | |
|
r196 | ||
from .models import Experiment | |||
|
r346 | from celery import Celery | |
from celery.utils.log import get_task_logger | |||
from django.utils import timezone | |||
logger = get_task_logger(__name__) | |||
|
r196 | ||
|
r351 | @Task | |
|
r196 | def task_start(id_exp): | |
r348 | print("exp.id", id_exp) | ||
|
r346 | exp = Experiment.objects.get(pk=id_exp) | |
r311 | status = exp.status | ||
r348 | if status == 2: | ||
r311 | print('Experiment {} already running start task not executed'.format(exp)) | ||
return 2 | |||
if status == 3: | |||
|
r346 | now = datetime.now() | |
r311 | start = datetime.combine(now.date(), exp.start_time) | ||
|
r346 | end = datetime.combine(now.date(), exp.end_time) | |
print(now) | |||
print(start) | |||
print(end) | |||
r311 | if end < start: | ||
end += timedelta(1) | |||
try: | |||
print('Starting exp:{}'.format(exp)) | |||
exp.status = exp.start() | |||
except: | |||
print('Error') | |||
exp.status = 0 | |||
if exp.status == 2: | |||
r348 | #task = task_stop.apply_async((id_exp,),eta=end) #Antiguo eta=end+timedelta(hours=5)) | ||
task = task_stop.apply_async((id_exp,),eta=end+timedelta(hours=5)) #Antiguo eta=end+timedelta(hours=5)) | |||
r311 | exp.task = task.id | ||
r348 | |||
#------------ new ---------------------- | |||
if status == 4 or status == 1: | |||
now = datetime.now() | |||
start = datetime.combine(now.date(), exp.start_time) | |||
end = datetime.combine(now.date(), exp.end_time) | |||
print(now) | |||
print(start) | |||
print(end) | |||
if now >= start: | |||
print('Starting exp:{}'.format(exp)) | |||
exp.status = exp.start() | |||
#--------------------------------------- | |||
r311 | exp.save() | ||
return exp.status | |||
r348 | |||
|
r351 | @Task | |
|
r196 | def task_stop(id_exp): | |
exp = Experiment.objects.get(pk=id_exp) | |||
r311 | if exp.status == 2: | ||
try: | |||
print('Stopping exp:{}'.format(exp)) | |||
exp.status = exp.stop() | |||
except: | |||
print('Error') | |||
exp.status = 0 | |||
|
r253 | ||
|
r346 | now = datetime.now() | |
start = datetime.combine(now.date()+timedelta(1), exp.start_time) | |||
task = task_start.apply_async((id_exp, ), eta=start) #Antiguo eta=start+timedelta(hours=5)) | |||
exp.task = task.id | |||
r311 | exp.status = 3 | ||
exp.save() | |||
return exp.status | |||
|
r253 | ||
#Task to get status | |||
|
r351 | @Task | |
|
r253 | def task_status(id_exp): | |
|
r346 | print ("task status"+str(id_exp)) | |
|
r253 | exp = Experiment.objects.get(pk=id_exp) | |
if exp.status==2: | |||
run_every = timedelta(minutes=1) | |||
|
r346 | now = datetime.utcnow() | |
date = now + run_every | |||
|
r253 | task_status.apply_async((id_exp,), eta=date) | |
r338 | print ("Monitoring...") | ||
|
r253 | exp.get_status() | |
return exp.status | |||
else: | |||
return exp.status | |||
r348 | |||
|
r351 | @Task | |
r348 | def task_test(id_exp): | ||
print("mm",id_exp) | |||
exp = Experiment.objects.get(pk=id_exp) | |||
exp.status = exp.start() | |||
return exp.status |