Я запускаю Python 2.7.10 и Celery 3.1.19 с использованием RabbitMQ 3.5.6.Pinton Celery Asynchronous Tasks
Я боюсь, что я просто не понимаю, как работает Сельдерей. Вот мой tasks.py файл:
from celery import Celery
app = Celery('tasks', backend='rpc://', broker='amqp://[email protected]//')
@app.task
def add(a, b):
return a + b
А вот стенограмма моей игры с этим:
In [20]: res0 = add.delay(1,2)
In [21]: res0.ready()
Out[21]: True
In [22]: res0.get()
Out[22]: 3
In [23]: res1 = add.delay(2,3)
In [24]: res1.ready()
Out[24]: True
In [25]: res1.get()
Out[25]: 5
--- try in a different order ----
In [26]: res0 = add.delay(1,2)
In [27]: res1 = add.delay(2,3)
In [28]: res0.ready()
Out[28]: True
In [29]: res1.ready()
Out[29]: False
In [30]: res0.get()
Out[30]: 3
Я думал, что сельдерей может выполнять задачи асинхронно? Почему и то, и другое: add
s работают сверху, но не внизу? Я должен злоупотреблять или недопонимать Сельдерей. Кто-нибудь может мне помочь?
Спасибо за помощь!
Update:
Другой транскрипт играть с этим. Является ли сельдерей квантовомеханическим, когда государство только рушится, когда вы проверяете, что произошло ?! Я весьма озадачен!
In [12]: res0 = add.delay(1,2)
In [13]: res1 = add.delay(2,3)
In [14]: res0.ready()
Out[14]: True
In [15]: res1.ready()
Out[15]: False
In [16]: res0.result
Out[16]: 3
--- another try ----
In [17]: res0 = add.delay(1,2)
In [18]: res1 = add.delay(2,3)
In [19]: res1.ready()
Out[19]: True
In [20]: res0.ready()
Out[20]: False
In [21]: res1.result
Out[21]: 5