为什么Celery使用Redis经纪人进行投票?

时间:2014-03-12 17:28:06

标签: python redis celery

根据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)

1 个答案:

答案 0 :(得分:3)

轮询是任何新结果存储的默认实现,因为它在没有特定于后端的代码的情况下工作。使用Redis PUB / SUB在愿望清单上;代码还没有编写完成:https://github.com/celery/celery/issues/799