tasks.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from __future__ import absolute_import
  2. import celery
  3. from tornado import web
  4. from ..views import BaseHandler
  5. from ..models import TaskModel, WorkersModel
  6. class TaskView(BaseHandler):
  7. @web.authenticated
  8. def get(self, task_id):
  9. task = TaskModel.get_task_by_id(self.application, task_id)
  10. if task is None:
  11. raise web.HTTPError(404, "Unknown task '%s'" % task_id)
  12. self.render("task.html", task=task)
  13. class TasksView(BaseHandler):
  14. @web.authenticated
  15. def get(self):
  16. app = self.application
  17. limit = self.get_argument('limit', default=None, type=int)
  18. worker = self.get_argument('worker', None)
  19. type = self.get_argument('type', None)
  20. state = self.get_argument('state', None)
  21. worker = worker if worker != 'All' else None
  22. type = type if type != 'All' else None
  23. state = state if state != 'All' else None
  24. tasks = TaskModel.iter_tasks(app, limit=limit, type=type,
  25. worker=worker, state=state)
  26. workers = WorkersModel.get_workers(app)
  27. seen_task_types = TaskModel.seen_task_types(app)
  28. self.render("tasks.html", tasks=tasks,
  29. task_types=seen_task_types,
  30. all_states=celery.states.ALL_STATES,
  31. workers=workers,
  32. limit=limit,
  33. worker=worker,
  34. type=type,
  35. state=state)