У меня есть веб-приложение Django 1.5.1, использующее Celery 3.0.23 с RabbitMQ 3.1.5. и sqlite3.
Я могу отправлять задания с помощью простого result = status.tasks.mymethod.delay(parameter)
, все задания выполняются правильно:
[2013-09-30 17:04:11,369: INFO/MainProcess] Got task from broker: status.tasks.prova[a22bf0b9-0d5b-4ce5-967a-750f679f40be]
[2013-09-30 17:04:11,566: INFO/MainProcess] Task status.tasks.mymethod[a22bf0b9-0d5b-4ce5-967a-750f679f40be] succeeded in 0.194540023804s: u'Done'
Я хочу отобразить на странице последние 10 отправленных заданий и их статус. Есть ли способ в Django получить такие объекты? Я вижу пару таблиц в базе данных (celery_taskmeta
и celery_taskmeta_2ff6b945
) и попробовал несколько доступа к объектов, но Django всегда отображает страницу AttributeError
.
Как правильно получить доступ к результатам Celery из Django?
Выполнение
cel = celery.status.tasks.get(None)
cel = status.tasks.all()
не работает, что приводит к вышеупомянутой ошибке AttributeError. (status
— это имя моего приложения)
РЕДАКТИРОВАТЬ: я уверен, что задачи сохраняются, как в этом небольшом руководстве говорится:
По умолчанию django-celery сохраняет это состояние в базе данных Django. Вы можете выбрать альтернативный сервер результатов или полностью отключить состояния (см. Серверы результатов).
После ссылок приведены только ссылки на то, как настроить соединение с БД, а не на то, как получить результаты.