Найти - Пользователи
Полная версия: Многопоточный сервер, что использовать?
Начало » Python для новичков » Многопоточный сервер, что использовать?
1
megaman
Задача такая: есть около 400 клиентов которые раз в пару минут оправляют небольшую порцию данных на сервер. Сервер должен 100% принимать сообщения от всех клиентов и писать их в базу данных. Нашел несколько примеров сделанных с помощью threading, там каждое новое подключение передается в новый поток, а после получения от клиента сообщения об окончании передачи сокет и поток закрываются. Я так понимаю что это мне не подходит т.к. сервер принимает данные от клиента пока сервер работает, т.е. сокет и поток тоже существуют постоянно. Читал еще про асинхронный прием сообщений, но немного не понял. Напишите пожалуйста логику работы подобного сервера и что использовать для его работы (потоки, процессы, асинхронное чтение или может еще что-то есть), можно просто общее описание без примеров кода.
FishHook
megaman
Почему вы не хотите использовать в работе готовые решения? Любой веб-сервер решит вашу задачу на 200%
doza_and
megaman
мне не подходит т.к. сервер принимает данные от клиента пока сервер работает
Надо чтобы не работал но принимал сообщения? :).
FishHook
Любой веб-сервер решит вашу задачу на 200%
Ну веб сервер не решит если он не запущен.
zeromq например имеет очереди сообщений с обоих сторон и на клиенте и на сервере.
papuas
doza_and
megaman
мне не подходит т.к. сервер принимает данные от клиента пока сервер работает
Надо чтобы не работал но принимал сообщения? .
Он наверное имел ввиду, что-то вроде легковесного демона: который спит в режиме стэнд бай, и как только данные прилетят на сетевую карту(буффер) начинал бы запускать сокеты,шмокеты и попутно инсертить все в бд,а потом опять спать.

megaman
Напишите пожалуйста логику работы подобного сервера и что использовать для его работы
Вы художник вам и карты в руки

Можете посмотреть в сторону утилитки netcat
Плюс к ней пару своих костылей и ваш турбо сервер готов.
megaman
Непонятно задал вопрос постараюсь объяснить что я хочу узнать. Например за 1 секунду на порт приходит 100 пакетов от разных клиентов, я так понимаю они будут храниться в каком-то буфере пока обрабатываются пакеты пришедшие раньше, а если буфер переполнится пакеты потеряются. Мне нужно принимать и обрабатывать все данные от клиентов, даже при очень большом количестве клиентов.
megaman
Если я правильно понимаю то в моем случае мне поможет модуль asyncio
vic57
для гарантированной доставки используют MQ (message queue)
https://habrahabr.ru/post/149694/
быстрой считается ZeroMQ
http://www.opennet.ru/opennews/art.shtml?num=27137
https://github.com/aio-libs/aiozmq
но зачем вам тут питон?
https://habrahabr.ru/post/198578/

Rodegast
Я думаю что тебе нужен Twisted
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB