Мы используем celery для запуска асинхронных задач для сайта Django.
Текущая рабочая настройка: -pool=prefetch
с --max-memory-per-child 5120000
. Максимальный порог памяти важен, потому что наши задачи имеют утечку памяти.
Теперь в недавнем анализе мы обнаружили, что наши задачи связаны с вводом / выводом и будут работать намного лучше с пулом выполнения на основе потоков, таким как * 1007. * Например, мы можем получить намного более высокую пропускную способность.
Однако ни параметр max-memory-per-child
, ни параметр max-tasks-per-child
не поддерживаются для потоковых пулов выполнения. В документации сказано ( source ):
поддержка пула: prefork
Это любая другая конфигурация сельдерея, которая может помочь мне ограничить максимальное количество рабочей памяти и / или принудительно перезапускать работника после выполнения x задач или это единственный вариант перезапустить работника с помощью cron?