LINUX.ORG.RU

python-flask + backend-service

 , ,


1

2

Делаю такую задачку.

Есть небольшая веб-морда на python-flask:index.py+templates. При заполнении формы и нажатии «SEND», надо обработать запрос и вернуть результат (например, вернуть SELECT COUNT(*) FROM TABLE1). Так как одновременных клиентов много (до 5к коннектов к веб-морде), обработка должна быть неблокирующей (асинхронность должен поддерживать модуль обмена с СУБД). Хочется вынести собственно SQL-запросы в отдельный процесс, чтобы контролировать кол-во коннектов к базе (не зависеть от числа worker'ов веб-сервера). В этом процессе-сервисе они будут висеть в очереди, и возвращаться обратно по TCP/IP в index.py. Как наиболее экономно реализовать обмен запрос-ответ между index.py и питоновским сервисом, чтобы не парсить самому TCP data? Для Си я слышал про ZeroMQ, а что есть для Python?

★★★★★

Ответ на: комментарий от pawnhearts

Для питона тоже есть zeromq внезапно

Это хорошо, буду пробовать. Не ожидал.

выкидываем фласк, берем tornado и не нужно ничего городить

Выбран именно flask в качестве фреймворка.

pacify ★★★★★
() автор топика
Ответ на: комментарий от ggrn

Разумеется нет, но всегда есть возможность поставить. Ну или почти всегда.

Kilte ★★★★★
()
Ответ на: комментарий от pacify

Есть небольшая веб-морда
одновременных клиентов много (до 5к коннектов к веб-морде)
Выбран именно flask в качестве фреймворка

Не стоит быть таким категоричным в своем выборе в данной ситуации :-).

Чтобы оградить базу от большого числа параллельных сессий нужно организовать очередь задач, это ведь ты и собираешься сделать? Можно взять готовую, хоть ту же celery, а не пилить свой велосипед на ZeroMQ. Или поток сообщений слишком большой?

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)

Так как одновременных клиентов много (до 5к коннектов к веб-морде),

Держи их nginxом, епта. Дрочат на асинхроность на беке только неразумные школоло.

A1
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.