Как удаленно выполнить задачу Celery с различными аргументами, асинхронно?
Я создаю распределенное приложение с Django, и проекту на сервере A нужно удаленно выполнить задачу Celery
на сервере B, C, D (...), с тысячами различных аргументов, асинхронно. Каков наилучший способ достичь этого?
Соображения
- Возврат задачи может остаться на сервере B, C, D (...);
- Сервер A расположен в другом районе, чем другие серверы;
- Производительность важна.
Одна из идей, которую я хотел бы исследовать, - это POST-запрос со списком аргументов в каждом сервере и асинхронное выполнение задач там же, с помощью apply_async()
. Но мне неясно, как POST-запрос может запустить задачу Celery.
Здесь я предполагаю, что send_task()
не является асинхронным, поэтому я не думаю, что такой вариант можно рассматривать. Или, возможно, несколько потоков Redis могли бы доставить 10 000 сообщений на все серверы без увеличения риска потери сообщений по пути. Как по мне, это не самая лучшая идея.