为什么 Celery 对 Redis 代理使用轮询?

Pie*_*nes 5 python redis celery

根据其关于使用 Redis 后端时Celery轮询结果选项的文档interval,默认情况下使用 0.5 秒的间隔。

天真的开发人员可能会认为任何使用 Redis 的排队系统至少会尝试利用其 LIST 或 PUBSUB 机制。为什么 Celery 不这样做而是依靠轮询?

举个例子,当通过 Celery 工作线程运行时,以下调用正好花费0.5秒(这是默认的轮询间隔):r.get()

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)
Run Code Online (Sandbox Code Playgroud)