##// END OF EJS Templates

File last commit:

r311:6467cbbb1e89
r314:8d83194b6bd7 merge
Show More
tasks.py
68 lines | 1.8 KiB | text/x-python | PythonLexer
from __future__ import absolute_import
from radarsys.celery import app
from celery import task
from datetime import timedelta, datetime
from .models import Experiment
@task
def task_start(id_exp):
exp = Experiment.objects.get(pk=id_exp)
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
@task
def task_stop(id_exp):
exp = Experiment.objects.get(pk=id_exp)
if exp.status == 2:
try:
print('Stopping exp:{}'.format(exp))
exp.status = exp.stop()
except:
print('Error')
exp.status = 0
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
#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