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