Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2017 04:09:19

Virtul
От:
Зарегистрирован: 2012-01-27
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Посоветуйте, как лучше соединить два процесса

Доброго дня, может быть задача выглядит простой, но наверняка есть подводные камни:
есть тривиальный код вокруг С библиотечки (ctypes), которая создаёт сокет сервер и читает в цикле от него сообщения, пишет в него и т.п., реализует какой-то там проприетарный протокол (при этом входящих сообщений относительно много, ~10/сек)

Нужно прочитанные в лупе сообщения отдавать через веб (здесь ~5 подключений)

Подскажите, пожалуйста, как без изысков и попроще организовать такой код? И при этом, чтобы оба сервера выдерживали приведённую нагрузку

Благодарю за помощь и советы



Офлайн

#2 Апрель 4, 2017 08:30:29

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Посоветуйте, как лучше соединить два процесса

Посмотри в сторону асинхронного фреймворка tornado, скорее всего подойдёт под поставленные задачи

Офлайн

#3 Апрель 4, 2017 08:31:32

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Посоветуйте, как лучше соединить два процесса

Virtul
сообщений относительно много, ~10/сек
Это мало, если конечно сообщения умеренного размера.
Virtul
Нужно прочитанные в лупе сообщения отдавать через веб (здесь ~5 подключений)
Принудительно отдавать данные в вебе нельзя. Классический веб сервер только отвечает на запросы клиентов. Дальше решение зависит от того какое запаздывание допустимо при отображении данных.
У вас похоже можно ограничиться активным апдейтом страниц с заданной периодичностью, например поставить время инвалидации страницы 10 секунд.
Если долго - аякс, тогда думаю можно довести запаздывание до пол секунды - секунды.
Иначе веб сокет.



Офлайн

#4 Апрель 4, 2017 19:21:30

Virtul
От:
Зарегистрирован: 2012-01-27
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Посоветуйте, как лучше соединить два процесса

Спасибо, да, веб сокетами хочу показывать, торнадо не знаю как использовать с этой либой, т.к. он файл лайк объект с fileno() хочет, не нашёл примеров как таковой создать самому из обычных строк
пока что просто через multiprocessing запускаю flask и луп библиотеки, не знаю насколько это в целом адекватно, но на пока сойдёт :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version