Celery:Redis 作为代理离开任务元键

eal*_*eon 5 python redis celery

我有 Redis 作为代理的芹菜应用程序。

代码由以下循环组成:

running = []
res = add.apply_async([1,2], queue='add')
running.append(res)

while running:
    r = running.pop()
    if r.ready():
        print r.get()
    else:
        running.insert(0,r)
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我redis-cli进入 redis 并执行时,keys * 我看到一堆 celery-task-meta 键。

他们为什么不清理?
那些是干什么用的?

——

[编辑]

我已经阅读了 CELERY_TASK_RESULT_EXPIRES 设置。
是否可以在读取结果后立即清理Redis中的任务键,而不是等到到期时间?

bin*_*381 4

来自芹菜文档:

AsyncResult.forget()
   Forget about (and possibly remove the result of) this task.
Run Code Online (Sandbox Code Playgroud)

r.get()那么你必须先r.forget()

但是,您不需要清理钥匙。对于,医生说:

CELERY_TASK_RESULT_EXPIRES

默认为 1 天后过期。