如果我有原始任务,我可以从task.request.args
获取参数,但如果我只有任务ID,那么有办法获取参数吗?它似乎没有办法从AsyncResult
对象中获取它们,据我所知,没有办法重新创建任务。
我想这样做,因为我有一个前端轮询后端以获取任务更新,如果它可以显示任务参数,那将非常有用。看到参数存储在代理中,这应该是可能的,至少在任务处于挂起状态时。
当然还有其他方法可以做到这一点,但这将是一种干净的做事方式。
答案 0 :(得分:3)
如果任务处于暂挂状态或当前正在执行,您可以看到任务的参数。最简单的方法是使用芹菜检查方法。
from celery.task.control import inspect
i = inspect()
active_tasks = i.active()
reserved_tasks = i.reserved()
scheduled_tasks = i.scheduled()
您可以迭代它们并使用任务ID,您可以获得所有任务详细信息,如
{'acknowledged': True,
'args': '(1000,)',
'delivery_info': {'exchange': '',
'priority': 0,
'redelivered': None,
'routing_key': 'celery'},
'hostname': 'celery@pavilion',
'id': '30d41ba2-3e71-49ce-8e7d-830ba1152256',
'kwargs': '{}',
'name': 't.wait',
'time_start': 1007.945882783,
'type': 't.wait',
'worker_pid': 10560}
另外,你也可以从经纪人那里读取数据,然后解决它,你可以获得任务评估。