我有以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)
一切正常,但当我redis-cli
进入redis并执行keys *
时
我看到一堆celery-task-meta键。
他们为什么不清理? 这些是为了什么?
-
[编辑]
我已阅读有关CELERY_TASK_RESULT_EXPIRES设置的信息 是否可以在读取结果后立即清除Redis中的任务键,而不是等到到期时间?
答案 0 :(得分:2)
来自Celery Doc:
AsyncResult.forget()
Forget about (and possibly remove the result of) this task.
您必须先r.get()
然后r.forget()
但是,你不需要清理钥匙。 因为,doc说:
CELERY_TASK_RESULT_EXPIRES
默认是在1天后过期。
答案 1 :(得分:0)
我遇到了同样的问题。为我解决的问题是在我的celery.py文件中添加了app.autodiscover_tasks()