为Celery中的每个任务分叉进程

min*_*hee 4 fork memory-management multiprocessing celery

我目前使用Python的C扩展库,但它似乎有内存泄漏.在我运行的任务celeryd使用这个C扩展库做一些事情,并celeryd在一个小时后吃掉大量内存.我无法修补这个C扩展库有很多原因,但我想在Celery中为每个任务分叉进程.芹菜有这样的选择吗?

mhe*_*her 9

您可以使用CELERYD_MAX_TASKS_PER_CHILD选项或--maxtasksperchild芹菜开关.

在每个任务后重新启动工作进程:

CELERYD_MAX_TASKS_PER_CHILD=1

https://celery.readthedocs.org/en/latest/userguide/workers.html#max-tasks-per-child-setting

  • 为每项新任务分叉有哪些潜在的缺点? (2认同)