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

时间:2012-01-13 06:56:05

标签: memory-management fork multiprocessing celery

我目前使用Python的C扩展库,但它似乎有内存泄漏。在celeryd上运行的任务使用此C扩展库执行某些操作,celeryd大约一小时后会占用大量内存。我无法修补这个C扩展库有很多原因,但我想在Celery中为每个任务分叉进程。 Celery有没有这样的选择?

1 个答案:

答案 0 :(得分:9)

您可以使用CELERYD_MAX_TASKS_PER_CHILD选项或--maxtasksperchild celeryd开关。

在每项任务后重启工作进程:

CELERYD_MAX_TASKS_PER_CHILD=1

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