Группа цепей висит навсегда в сельдерее - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь построить следующий рабочий процесс в сельдерее:

         (chainA)
task1 -- task2 -- task3--|  
                         |
         (chainB)        |  (group)    
task1 -- task2 -- task3--|-------------
                         |              
         (chainC)        |
task1 -- task2 -- task3--|

            .
            .
            .

Я в конечном итоге с этим кодом:

list_chains = build_s_chains()
group(*list_chains)()

Момент группы строк (* list_chains) ()выполняется все останавливается и останавливается.Похоже на тупик, без ошибки.

Если я попытаюсь выполнить цепочки в цикле for, все будет работать нормально, но если я выполню их в цикле for, я не смогу подключить другую задачу наконец цикла.Я знаю, что это определение аккорда, я пробовал также аккорд, он все еще блокирует.

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

и вот мои настройки сельдерея:

# Sensible settings for celery
CELERY_ALWAYS_EAGER = False
CELERY_ACKS_LATE = True
CELERY_TASK_PUBLISH_RETRY = True
CELERY_DISABLE_RATE_LIMITS = False

# By default we will not ignore result
# If you want to see results and try out tasks_old interactively, change it to False
# Or change this setting on tasks_old level
CELERY_IGNORE_RESULT = False
CELERY_SEND_TASK_ERROR_EMAILS = False
CELERY_TASK_RESULT_EXPIRES = 600

update: когда я устанавливаю CELERY_ALWAYS_EAGER = True, тогда группаработает нормально с командой

group(*chain_list)()

, но работает, конечно, локально, а это не то, что мне нужно.

1 Ответ

0 голосов
/ 28 ноября 2018

Убедитесь, что вы используете неизменяемые или изменяемые подписи при использовании группы после создания цепочки.Например:

res = group(job_chain.si(), job_chain.si())()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...