Этот вопрос является продолжением django + celery: отключить предварительную выборку для одного рабочего, есть ли ошибка?
У меня была проблема с сельдереем (см. Вопрос, которому я следуювверх) и для ее решения я хотел бы иметь двух рабочих из сельдерея с -concurrency 1 каждый, но с двумя различными настройками task_acks_late.
Мой текущий подход работает, но, на мой взгляд, не очень красиво. Я делаю следующее:
в settings.py
моего проекта django:
CELERY_TASK_ACKS_LATE = os.environ.get("LACK", "False") == "True"
Это позволяет мне запускать работников сельдерея с помощью следующих команд:
LACK=True celery -A miniclry worker --concurrency=1 -n w2 -Q=fast,slow --prefetch-multiplier 1
celery -A miniclry worker --concurrency=1 -n w1 -Q=fast
Что было бы более интуитивно понятно, если бы я мог сделать что-то вроде:
celery -A miniclry worker --concurrency=1 -n w2 -Q=fast,slow --prefetch-multiplier 1 --late-ack=True
celery -A miniclry worker --concurrency=1 -n w1 -Q=fast --late-ack=False
Я нашел Инициализация разных работников сельдерея с разными значениями , но не понимаю, как встроить это в мойконтекст джанго / сельдерея. В какие файлы мне нужно будет добавить код, который добавляет аргумент в анализатор, и как я могу использовать пользовательский параметр для изменения task_acks_late настроек сельдерея.
Обновление: Спасибо @В ответе Гринева мне удалось добавить пользовательские опции для сельдерея. Однако, похоже, что изменение конфига с помощью этого механизма «приходит слишком поздно», и эта последовательность не принимается во внимание.