Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Сервер с 2000 одновременными соединениями. [RSS Feed]

#1 Июнь 7, 2011 11:52:13

max1
От:
Зарегистрирован: 2011-06-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Хочу сделать сервер, который будет одновременно каждые 0,3 сек слать данные(несколько цифр) 2000 клиентам.
Можно ли это сделать на питоне или не стоит?



Офлайн

#2 Июнь 7, 2011 13:30:15

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Сервер с 2000 одновременными соединениями.

Без закрытия соединения (иначе ни на чём не получится) и без потоков (системных, к зелёным это не относится), мне кажется, может получиться (не занимался таким экстримом).

..bw



Офлайн

#3 Июнь 7, 2011 13:49:45

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Мне кажется стоит смотреть в сторону UDP



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Июнь 7, 2011 19:39:07

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Можно посмотреть в сторону libevent (http://code.google.com/p/pyevent/)

Офлайн

#5 Июнь 7, 2011 19:44:10

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Twisted, Tornado



Офлайн

#6 Июнь 10, 2011 00:09:00

max1
От:
Зарегистрирован: 2011-06-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Спасибо за советы.
Поставил tornado.
Взял их готовый пример

#!/usr/bin/python2.6

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
print "dddd"
self.write("Hello, world")

application = tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
запустил.
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
telnet 127.0.0.1 8888
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
telnet> qqqewew
?Invalid command
telnet> ewew
?Invalid command
telnet> ewewewew
?Invalid command
После выхода пишет
Traceback (most recent call last):
File "./tor.py", line 17, in <module>
tornado.ioloop.IOLoop.instance().start()
File "/usr/lib/python2.6/site-packages/tornado/ioloop.py", line 243, in start
event_pairs = self._impl.poll(poll_timeout)
KeyboardInterrupt



Отредактировано (Июнь 10, 2011 00:10:31)

Офлайн

#7 Июнь 10, 2011 00:23:06

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.



Офлайн

#8 Июнь 10, 2011 00:30:32

max1
От:
Зарегистрирован: 2011-06-07
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Александр Кошелев
max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.
А не подбросите простой пример для работы без http?



Офлайн

#9 Июнь 10, 2011 05:54:37

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Сервер с 2000 одновременными соединениями.

> Поставил tornado.
Теперь удали и поставь concurrence, syncless или eventlet.
Нужен кто-то один, примеры там есть. Есть ещё circuits, но я с ним не работал. Это всё из зелёных (greenlet/stackless, микронити).
Как я понял задача у тебя не большая (по сетевой части), так что такой монстр как Twisted тебе не нужен.

..bw



Офлайн

#10 Июнь 10, 2011 11:09:59

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Сервер с 2000 одновременными соединениями.

Согласен с bw. Если у вас 1 маленький проект, смысл твистеда пропадает, так как дольше будете разбиратся, что к чему.
Как вариант можете использовать зеленые потоки, как посоветовал bw, либо Stackless Python, в котором есть встроенный механизм микронитей - тасклеты.



Офлайн

  • Начало
  • » Network
  • » Сервер с 2000 одновременными соединениями.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version