result.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """The ``celery result`` program, used to inspect task results."""
  2. from __future__ import absolute_import, unicode_literals
  3. from celery.bin.base import Command
  4. class result(Command):
  5. """Gives the return value for a given task id.
  6. Examples:
  7. .. code-block:: console
  8. $ celery result 8f511516-e2f5-4da4-9d2f-0fb83a86e500
  9. $ celery result 8f511516-e2f5-4da4-9d2f-0fb83a86e500 -t tasks.add
  10. $ celery result 8f511516-e2f5-4da4-9d2f-0fb83a86e500 --traceback
  11. """
  12. args = '<task_id>'
  13. def add_arguments(self, parser):
  14. group = parser.add_argument_group('Result Options')
  15. group.add_argument(
  16. '--task', '-t', help='name of task (if custom backend)',
  17. )
  18. group.add_argument(
  19. '--traceback', action='store_true', default=False,
  20. help='show traceback instead',
  21. )
  22. def run(self, task_id, *args, **kwargs):
  23. result_cls = self.app.AsyncResult
  24. task = kwargs.get('task')
  25. traceback = kwargs.get('traceback', False)
  26. if task:
  27. result_cls = self.app.tasks[task].AsyncResult
  28. task_result = result_cls(task_id)
  29. if traceback:
  30. value = task_result.traceback
  31. else:
  32. value = task_result.get()
  33. self.out(self.pretty(value)[1])