Python Celery max_tasks_per_子项设置未重新启动工作进程

Python Celery max_tasks_per_子项设置未重新启动工作进程,python,multiprocessing,celery,Python,Multiprocessing,Celery,芹菜4.4.7和5.0.2都不合格 我的任务正在泄漏大量内存。 我想在每个任务完成后重新启动worker。 我在无并发模式下启动芹菜--concurrency=1或/和-P solo,因为单个任务中使用的内存可能接近系统总内存 我试图在celeryconfig.py中设置worker\u max\u tasks\u per\u child=1,并在CLI中设置--max tasks per child=1,但工作进程没有重新启动。我非常确定芹菜工作进程不会在任务结束后终止。我会在任务结束时尝试使

芹菜4.4.7和5.0.2都不合格

我的任务正在泄漏大量内存。 我想在每个任务完成后重新启动worker。 我在无并发模式下启动芹菜--concurrency=1或/和
-P solo
,因为单个任务中使用的内存可能接近系统总内存


我试图在
celeryconfig.py
中设置
worker\u max\u tasks\u per\u child=1
,并在CLI中设置
--max tasks per child=1
,但工作进程没有重新启动。

我非常确定芹菜工作进程不会在任务结束后终止。我会在任务结束时尝试使用,这样流程将退出,并且
systemd
或负责流程的任何其他服务将使其恢复


但真正的解决方案应该是编写一个没有内存泄漏的代码

,该设置不会将芹菜工作进程配置为重新启动,而是在N个任务后生成一个新的工作进程。我猜行为还取决于您使用的并发类型……没有并发。这个过程很大,需要GPU。所以,
——并发1-P solo
到目前为止,我从未使用过solo。。。通过预工作并发,它可以按预期工作。也许在你的情况下处理方式有所不同。我假设solo没有工作进程,因此每个子进程的工作进程(最大任务)被忽略,因为,猜猜看,没有“子”进程!)尝试不使用solo并将并发设置为1。这几乎是一样的。