Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2017 08:16:14

megaman
Зарегистрирован: 2015-09-12
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

Задача такая: есть около 400 клиентов которые раз в пару минут оправляют небольшую порцию данных на сервер. Сервер должен 100% принимать сообщения от всех клиентов и писать их в базу данных. Нашел несколько примеров сделанных с помощью threading, там каждое новое подключение передается в новый поток, а после получения от клиента сообщения об окончании передачи сокет и поток закрываются. Я так понимаю что это мне не подходит т.к. сервер принимает данные от клиента пока сервер работает, т.е. сокет и поток тоже существуют постоянно. Читал еще про асинхронный прием сообщений, но немного не понял. Напишите пожалуйста логику работы подобного сервера и что использовать для его работы (потоки, процессы, асинхронное чтение или может еще что-то есть), можно просто общее описание без примеров кода.

Офлайн

#2 Ноя. 28, 2017 08:18:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

megaman
Почему вы не хотите использовать в работе готовые решения? Любой веб-сервер решит вашу задачу на 200%



Офлайн

#3 Ноя. 28, 2017 21:56:59

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

Многопоточный сервер, что использовать?

megaman
мне не подходит т.к. сервер принимает данные от клиента пока сервер работает
Надо чтобы не работал но принимал сообщения? :).
FishHook
Любой веб-сервер решит вашу задачу на 200%
Ну веб сервер не решит если он не запущен.
zeromq например имеет очереди сообщений с обоих сторон и на клиенте и на сервере.



Отредактировано doza_and (Ноя. 28, 2017 21:59:56)

Офлайн

#4 Ноя. 29, 2017 00:05:43

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

doza_and
megaman
мне не подходит т.к. сервер принимает данные от клиента пока сервер работает
Надо чтобы не работал но принимал сообщения? .
Он наверное имел ввиду, что-то вроде легковесного демона: который спит в режиме стэнд бай, и как только данные прилетят на сетевую карту(буффер) начинал бы запускать сокеты,шмокеты и попутно инсертить все в бд,а потом опять спать.

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

Можете посмотреть в сторону утилитки netcat
Плюс к ней пару своих костылей и ваш турбо сервер готов.

Отредактировано papuas (Ноя. 29, 2017 00:27:30)

Офлайн

#5 Ноя. 29, 2017 07:52:53

megaman
Зарегистрирован: 2015-09-12
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

Непонятно задал вопрос постараюсь объяснить что я хочу узнать. Например за 1 секунду на порт приходит 100 пакетов от разных клиентов, я так понимаю они будут храниться в каком-то буфере пока обрабатываются пакеты пришедшие раньше, а если буфер переполнится пакеты потеряются. Мне нужно принимать и обрабатывать все данные от клиентов, даже при очень большом количестве клиентов.

Офлайн

#6 Ноя. 29, 2017 08:15:09

megaman
Зарегистрирован: 2015-09-12
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

Если я правильно понимаю то в моем случае мне поможет модуль asyncio

Офлайн

#7 Ноя. 29, 2017 08:54:47

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Многопоточный сервер, что использовать?

для гарантированной доставки используют 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/

Отредактировано vic57 (Ноя. 29, 2017 09:22:36)

Офлайн

#8 Ноя. 29, 2017 11:55:28

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2832
Репутация: +  186  -
Профиль   Отправить e-mail  

Многопоточный сервер, что использовать?

Я думаю что тебе нужен Twisted



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version