Найти - Пользователи
Полная версия: Сервер с 2000 одновременными соединениями.
Начало » Network » Сервер с 2000 одновременными соединениями.
1
max1
Хочу сделать сервер, который будет одновременно каждые 0,3 сек слать данные(несколько цифр) 2000 клиентам.
Можно ли это сделать на питоне или не стоит?
bw
Без закрытия соединения (иначе ни на чём не получится) и без потоков (системных, к зелёным это не относится), мне кажется, может получиться (не занимался таким экстримом).

..bw
PooH
Мне кажется стоит смотреть в сторону UDP
s0rg
Можно посмотреть в сторону libevent (http://code.google.com/p/pyevent/)
regall
Twisted, Tornado
max1
Спасибо за советы.
Поставил 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
Александр Кошелев
max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.
max1
Александр Кошелев
max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.
А не подбросите простой пример для работы без http?
bw
> Поставил tornado.
Теперь удали и поставь concurrence, syncless или eventlet.
Нужен кто-то один, примеры там есть. Есть ещё circuits, но я с ним не работал. Это всё из зелёных (greenlet/stackless, микронити).
Как я понял задача у тебя не большая (по сетевой части), так что такой монстр как Twisted тебе не нужен.

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