Celery任务中类似于close()或join()的方法(python)是什么?

3

最近了解到,使用Python的多进程包Pool需要调用以下方法:

pool.close()
pool.join()

在完成进程中的状态后,为了释放内存,你需要关闭这些进程。否则,它们会持续存在,你的计算机会充满Python任务;它们不会使用CPU,但会占用内存。

我的问题是: 我现在正在使用celery进行并行化(而不是使用Pool——我在Django WSGI应用程序中操作,Pool使得很难防止所有用户同时派生作业,这将导致服务器崩溃)。

我注意到celery也有非常相似的现象:我后台运行的6个celery进程开始吞噬内存。这是正常的吗?还是有类似于调用close()和join()的等效方法可以告诉celery任务我已经取回结果,不再需要它了?

非常感谢您的帮助。
Oliver

1个回答

1

根据文档,不需要手动关闭工作线程,因为它们会自动关闭。但是你可以使用kill强制关闭它们或者丢弃它们:

from celery.task.control import discard_all
discard_all()

这里有一些来自开发者的示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接