Как реализовать application server в питоне?

Задача - нужно непрерывно обрабатывать некий поток данных и делать на их основе какие-то вычисления, которые потом куда-то передавать. Назовем код который решает эту задачу обработчиком.

Обработчиком надо управлять. К примеру через веб-интерфейс на django. Например, на время остановить или изменить алгоритм обработки, при этом настройки должны быть персистентными.

Завязывать обработчик на базу данных (django models) или какую-либо систему передачи информации было бы, я думаю, не верно. Соответственно, встает вопрос как их развязать.

Напрашивается создание remote-facade, только как его сделать в питоне мне не очень понятно.

Т.е. в моем понимании должен быть объект, у которого есть коллекция обработчиков (их может быть много). Работать они должны параллельно друг другу. Он с помощью какого-то средства межпроцессорного взавимодействия получает команды и исполняет их вызывая методы соответствующего обработчика.
Только вот в питоне нет настоящей concurrency. Поэтому обработчик выходит надо делать в отдельном процессе. А это значит опять нужно какое-то средство межпроцессорного взаимодействия.

Так вот два вопроса:
Есть ли стандартное решение для связи django с application-server-ом? Как это правильно организовать? Использовать ли redis, zmq или что-то еще?
И как правильно организовать создание и управление обработчиками (zmq, rpc, что-то еще...)?
  • Вопрос задан
  • 2517 просмотров
Решения вопроса 1
@kazmiruk
сервер приложений - gevent
для обмена сообщениям - gearman
Очень неплохо показала себя подобная связка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы