Я пишу приложение на Python, которое требует одновременности и асинхронности.У меня было несколько рекомендаций для Twisted и Celery, но у меня возникли проблемы с определением, какой вариант лучше подходит для этого приложения (у меня нет опыта работы с любым из них).
Приложение (которое не являетсявеб-приложение) в основном сосредоточено на том, чтобы делать вызовы SOAP для различных сторонних API.Чтобы обработать данный фрагмент данных, мне нужно будет последовательно вызывать несколько API.И я хотел бы иметь возможность иметь пул «работников» для каждого из этих API, чтобы я мог сделать более 1 вызова за раз для каждого API.Ничто из этого не должно быть очень интенсивным процессором.
В частности, внешний процесс добавит новое «Сообщение» в базу данных этого приложения.Мне понадобится работа, которая следит за новыми сообщениями, а затем проталкивает их в процессе.Процесс будет содержать 4-5 шагов, которые должны выполняться по порядку, но могут происходить полностью асинхронно.Каждый шаг будет принимать сообщение и действовать в соответствии с ним, как правило, добавляя детали к сообщению.Каждый последующий шаг потребует вывода из шага, который предшествует ему.Для большинства из этих шагов работа включала в себя обращение к стороннему API, обычно с SOAP-клиентом, анализ ответа и обновление сообщения.Несколько случаев будут связаны с созданием бинарного файла (сложнее выбрать, если это важно).В конечном счете, после завершения последнего шага мне нужно обновить флаг в базе данных, чтобы указать, что весь процесс для этого сообщения завершен.
Кроме того, так как каждый шаг будет включать ожидание ответа сети,Я хотел бы увеличить общую пропускную способность, выполняя несколько одновременных запросов на каждом шаге.
Является ли Celery или Twisted более подходящей средой здесь?Если они оба решат проблему адекватно, есть ли плюсы / минусы использования одного против другого?Есть ли что-то еще, что я должен рассмотреть вместо этого?