根据its documentation on the interval
option Celery 民意调查获取使用Redis后端的结果,默认情况下使用0.5秒间隔。
一个天真的开发人员可能会认为使用Redis的任何排队系统至少会尝试利用其LIST或PUBSUB机制。为什么芹菜不这样做而是依靠民意调查?
例如,当通过Celery worker(这是默认的轮询间隔)时,r.get()
调用上的以下内容完全 0.5秒:
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0',
backend="redis://localhost:6379/0")
@app.task
def add(x, y):
return x + y
if __name__ == "__main__":
r = add.delay(5, 4)
result = r.get()
print(result)
答案 0 :(得分:3)
轮询是任何新结果存储的默认实现,因为它在没有特定于后端的代码的情况下工作。使用Redis PUB / SUB在愿望清单上;代码还没有编写完成:https://github.com/celery/celery/issues/799