Форум сайта python.su
Хочу сделать сервер, который будет одновременно каждые 0,3 сек слать данные(несколько цифр) 2000 клиентам.
Можно ли это сделать на питоне или не стоит?
Офлайн
Без закрытия соединения (иначе ни на чём не получится) и без потоков (системных, к зелёным это не относится), мне кажется, может получиться (не занимался таким экстримом).
..bw
Офлайн
Мне кажется стоит смотреть в сторону UDP
Офлайн
Можно посмотреть в сторону libevent (http://code.google.com/p/pyevent/)
Офлайн
Twisted, Tornado
Офлайн
Спасибо за советы.
Поставил 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()
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)
Офлайн
max1Так вы http запрос не сделали.
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Офлайн
Александр КошелевА не подбросите простой пример для работы без http?max1Так вы http запрос не сделали.
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Офлайн
> Поставил tornado.
Теперь удали и поставь concurrence, syncless или eventlet.
Нужен кто-то один, примеры там есть. Есть ещё circuits, но я с ним не работал. Это всё из зелёных (greenlet/stackless, микронити).
Как я понял задача у тебя не большая (по сетевой части), так что такой монстр как Twisted тебе не нужен.
..bw
Офлайн
Согласен с bw. Если у вас 1 маленький проект, смысл твистеда пропадает, так как дольше будете разбиратся, что к чему.
Как вариант можете использовать зеленые потоки, как посоветовал bw, либо Stackless Python, в котором есть встроенный механизм микронитей - тасклеты.
Офлайн