Сельдерей: рабочий с 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