Я новичок в сельдерее и джанго в целом, поэтому, пожалуйста, извините за недостаток знаний. Я пытаюсь выполнить тест, чтобы выполнить некоторые вычисления, и дождаться завершения теста, чтобы я мог убедиться, что это сделано для правильных ответов.
Вот что у меня есть:
В app/tests.py
from tasks import *
c = calculate.apply_async(args=[1])
# wait until the task is done
while not calculate.AsyncResult(c.id).status == "SUCCESS":
print c.state
pass
в приложении /tasks.py
from celery import shared_task
@shared_task
def calculate(proj_id):
#some calculations followed by a save of the object
Состояние никогда не изменяется от ожидающего, хотя в журнале сельдерея говорится, что задача была успешно завершена.
[2014-06-10 17:55:11,417: INFO/MainProcess] Received task: app.tasks.calculate[1f11e7ab-0add-42df-beac-3d94c6868aac]
[2014-06-10 17:55:11,505: INFO/MainProcess] Task app.tasks.calculate[1f11e7ab-0add-42df-beac-3d94c6868aac] succeeded in 0.0864518239978s: None
Я также добавил CELERY_IGNORE_RESULT = False в файле mainapp/settings.py, но это ничего не делало.