##// 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
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 from __future__ import absolute_import
Fix mix experiment and scheduler
r311 from radarsys.celery import app
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 from celery import task
Fiorella Quino
task for monitoring devices status from experiment...
r253 from datetime import timedelta, datetime
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196
from .models import Experiment
@task
def task_start(id_exp):
exp = Experiment.objects.get(pk=id_exp)
Fix mix experiment and scheduler
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
Fiorella Quino
task for monitoring devices status from experiment...
r253
Juan C. Espinoza
Add scheduler for campaigns/experiments using celery #718, fix views and models bugs...
r196 @task
def task_stop(id_exp):
exp = Experiment.objects.get(pk=id_exp)
Fix mix experiment and scheduler
r311 if exp.status == 2:
try:
print('Stopping exp:{}'.format(exp))
exp.status = exp.stop()
except:
print('Error')
exp.status = 0
Fiorella Quino
task for monitoring devices status from experiment...
r253
Fix mix experiment and scheduler
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
Fiorella Quino
task for monitoring devices status from experiment...
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