Сельдерей: как получить метаданные из пользовательских состояний?

Пример для пользовательских состояний показывает, что метаданные могут быть сохранены: http://docs.celeryproject.org/en/latest/userguide/tasks.html#custom-states

Какой API я могу использовать для извлечения метаданных, связанных с результатом?

Ответ 1

Приведенный пример выглядит следующим образом:

@app.task(bind=True)
def upload_files(self, filenames):
    for i, file in enumerate(filenames):
        self.update_state(state='PROGRESS',
            meta={'current': i, 'total': len(filenames)})

Когда вы настраиваете задачу, скажите

task = upload_files.delay(['happy.txt', 'sad.txt', ...])

Вы можете получить доступ к метаинформации через task.result

Надеюсь, что поможет

Ответ 2

Документы не дают понять, как получить метаданные из результата. Используйте AsyncResult.info.

>>> job = AsyncResult(job_id)
>>> print(job.info)
{'current': 2, 'total': 100}