Такая ситуация, нужно выполнить много тяжелых задач в короткое время, решили сделать на подобии распределенной системы. Отправляем параметры на разные сервера для параллельного вычисления.
Собственно говоря вопрос. Как нам отправить запрос с помощью библиотеки request не дожидаясь ответа, отправил данные и пусть они там сами себе вычисляются?? Не хотелось бы ставит таймаут на обрывании связи. Может есть какой-то другой способ?
И второй вопрос. Когда эти данные посчитаются они придут к нам обратно и нам их нужно записать. Вопрос как нам предусмотреть такой вариант что обратных запросов будет очень много что мы не сможешь их сохранить за один раз? У меня есть мысль - поставить на нашей стороне очередь и сохранять по мере поступления.
Конечно же я не говорю, что у нас будут объемы как у яндекса и к тому же думаю что все будет работать не плохо, но все же хотелось подложить соломку.
Кстати, если я не правильно мыслю, буду рад если направите в нужном русле.
sim3x, условно говоря обмениваемся данными по rest. То есть есть небольшое api и выбрали requests для запросов.
Все сервера наши. Пока на тесте их 2, т.к. только прорабатываем теорию. если выстрелит, то серверов разрастется до десятков.
Кирилл Горелов,
Ну вот на "основном сервере" у вас располагается менеджер очереди, а на других воркеры
И менеджер очереди по бинарному протоколу передает/получает задачи и данные на инстанс воркера
sim3x, А предположим если новые задачи будут появляться раз в 2-3 минуты, они будут вставать в очередь или сразу будут отправлены на выполнение на сторонний сервер?
И на стороннем сервере мне все равно придется делать что-то вроде апи для проверки входных данных, только я к нему уже буду обращаться через celery, которая будет отправлять запросы?
Я думаю выбрать zeromq, но вопрос. Как мне запускать задачи на клиенте, cron???
И т.к. мне надо запустить несколько разных задач, я буду писать несколько задач, которые будут запускаться на одном клиенте или на нескольких в рамках одного сервера?
И zeromq дружит с django, я посмотрел вроде нету ничего подобного.
Просто я пока не понимаю как мне брать из БД параметры и передать в задачу на выполнение. Конечно же почитаю документацию.....