¿Puedo obtener los argumentos de una tarea de apio si todo lo que tengo es el ID de tarea?

Si tengo la tarea original, puedo obtener los argumentos de task.request.args , pero si solo tengo el ID de la tarea, ¿hay alguna forma de obtener los argumentos? No parece que haya una manera de obtenerlos de un objeto AsyncResult , y por lo que puedo decir, no hay una manera de recrear la tarea.

Quiero hacer esto porque tengo un frontend que sondea el backend para las actualizaciones de las tareas, y sería útil si pudiera mostrar los argumentos de la tarea. Al ver que los argumentos se almacenan con el intermediario, esto debería ser posible, al menos cuando la tarea está en estado pendiente.

Naturalmente, hay otras formas de hacer esto, pero sería una forma limpia de hacer las cosas.

Si la tarea está en estado pendiente o si se está ejecutando actualmente, puede ver los argumentos de la tarea. La forma más fácil es utilizar el método de inspección de apio.

 from celery.task.control import inspect i = inspect() active_tasks = i.active() reserved_tasks = i.reserved() scheduled_tasks = i.scheduled() 

Puede iterar sobre ellos y, mediante el ID de tarea, puede obtener todos los detalles de la tarea como este.

 {'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} 

Alternativamente, también puede leer los datos del intermediario, deserticarlos y obtener los documentos de la tarea.