celery jobs(python)的close()或join()等价物?

时间:2012-01-25 18:23:14

标签: python celery

recently learned使用python的多处理包Pool要求你调用:

pool.close()
pool.join()

当你完成以释放那些进程中用于状态的内存时。否则,它们会持续存在,你的计算机将填满python工作;他们不会使用CPU,但会占用内存。

我的问题是: 我现在使用celery进行并行化(而不是Pool - 我正在Django WSGI应用程序中运行,Pool使得很难阻止所有用户在一次,这将使服务器崩溃。)

我注意到与celery非常相似的现象:我在后台运行的6个芹菜进程开始吞噬内存。这是正常的还是相当于调用close()和join()我可以用来告诉celery任务我已经检索到结果而不再需要它了?

非常感谢你的帮助。
奥利弗

1 个答案:

答案 0 :(得分:1)

在提到文档时,不需要关闭工作人员,因为他们将自动关闭。但您可以使用kill强制关闭它们或将其丢弃:

from celery.task.control import discard_all
discard_all()

以下是开发人员的一些examples