tasks.py
68 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
|
r196 | from __future__ import absolute_import | ||
r311 | from radarsys.celery import app | |||
|
r196 | from celery import task | ||
|
r253 | from datetime import timedelta, datetime | ||
|
r196 | |||
from .models import Experiment | ||||
@task | ||||
def task_start(id_exp): | ||||
exp = Experiment.objects.get(pk=id_exp) | ||||
r311 | status = exp.status | |||
if exp.status == 2: | ||||
print('Experiment {} already running start task not executed'.format(exp)) | ||||
return 2 | ||||
if status == 3: | ||||
now = datetime.now() | ||||
start = datetime.combine(now.date(), exp.start_time) | ||||
end = datetime.combine(now.date(), exp.end_time) | ||||
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: | ||||
task = task_stop.apply_async((id_exp,), eta=end+timedelta(hours=5)) | ||||
exp.task = task.id | ||||
exp.save() | ||||
return exp.status | ||||
|
r253 | |||
|
r196 | @task | ||
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 | |||
r311 | now = datetime.now() | |||
start = datetime.combine(now.date()+timedelta(1), exp.start_time) | ||||
task = task_start.apply_async((id_exp, ), eta=start+timedelta(hours=5)) | ||||
exp.task = task.id | ||||
exp.status = 3 | ||||
exp.save() | ||||
return exp.status | ||||
|
r253 | |||
#Task to get status | ||||
@task | ||||
def task_status(id_exp): | ||||
exp = Experiment.objects.get(pk=id_exp) | ||||
if exp.status==2: | ||||
run_every = timedelta(minutes=1) | ||||
now = datetime.utcnow() | ||||
date = now + run_every | ||||
task_status.apply_async((id_exp,), eta=date) | ||||
print "Monitoring..." | ||||
exp.get_status() | ||||
return exp.status | ||||
else: | ||||
return exp.status | ||||