У меня есть tasks.py
:
from celery import Celery
import time
app = Celery('tasks', backend='rpc://', broker='amqp://localhost')
@app.task
def add(x, y):
print "Waiting for some time!"
time.sleep(5)
return x+y + 10
, и я использую этот код для запуска задачи:
from tasks import add
import time
from celery.result import AsyncResult
r = add.delay(4, 4)
id = r.task_id
print "started task: "+id
newresult = AsyncResult(id)
print "ready? "+str(newresult.ready())
, и все это прекрасно работает.Задача отправляется рабочему сельдерея и сразу возвращается с
[bf@localhost CeleryTest]$ python celerytest.py
started task: e73ad2ab-3ab6-457a-9185-199c4073f99d
ready? False
Теперь я хочу запросить статус этой задачи из другого скрипта Python, поэтому я делаю это:
>>> from celery.result import AsyncResult
>>> from tasks import add
>>> newresult = AsyncResult('e73ad2ab-3ab6-457a-9185-199c4073f99d')
>>> newresult.ready()
False
Каким-то образом этот newresult
никогда не готов, и его результат None
.Как я могу запросить у Celery верный AsyncResult
из другого процесса?