Сельдерей: рабочий с concurrency и зарезервированные задачи работают только с одной задачей

Некоторые задачи в моем коде занимали больше времени и времени.

После проверки я заметил, что хотя у меня есть мой рабочий node, установленный в concurrency 6, и существует 6 процессов для выполнения работы, но в разделе "Выполняемые задачи" показано только 1 задача. Вот небольшое визуальное доказательство:

Вот рабочие параметры:

The worker options, as seen by flower

И вот вкладка задачи для этого рабочего только с одним запущенным процессом:

enter image description here

Я обнаружил, что если я перезапущу сельдерей, concurrency снова будет уважаться, и я увижу > 1 запущенную задачу, но после некоторого количества времени/задач он вернется к такому поведению.

Любые идеи для исправления этой прерывистой проблемы?

Ответ 1

Я не уверен, что это ваш прецедент, но я столкнулся с подобными проблемами, когда у меня было сочетание длинных и коротких задач. В основном то, что произошло, это то, что в какой-то момент процесс может запускать очень длительную задачу, предварительно предваряя несколько других задач, не позволяя им потреблять другие процессы. Поэтому я отключил предварительную загрузку, что полезно, только если вы выполняете множество коротких задач.

Чтобы отключить предварительную выборку, вам необходимо установить Celery 3.1 + и Ofair, например:

celery -A proj worker -l info -Ofair