Форкинг процессов для каждой задачи в сельдерее - PullRequest
4 голосов
/ 13 января 2012

В настоящее время я использую библиотеку расширений C для Python, но, похоже, есть утечки памяти.Задачи, которые выполняются на моем celeryd, делают что-то с помощью этой библиотеки расширений C, а celeryd съедает много памяти примерно через час.Я не могу исправить эту библиотеку расширений C по многим причинам, но вместо этого я хочу разветвлять процессы для каждой задачи в Celery.Есть ли такие варианты для сельдерея?

1 Ответ

9 голосов
/ 16 января 2012

Вы можете использовать опцию 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

...