max1
Июнь 7, 2011 11:52:13
Хочу сделать сервер, который будет одновременно каждые 0,3 сек слать данные(несколько цифр) 2000 клиентам.
Можно ли это сделать на питоне или не стоит?
Без закрытия соединения (иначе ни на чём не получится) и без потоков (системных, к зелёным это не относится), мне кажется, может получиться (не занимался таким экстримом).
..bw
PooH
Июнь 7, 2011 13:49:45
Мне кажется стоит смотреть в сторону UDP
s0rg
Июнь 7, 2011 19:39:07
Можно посмотреть в сторону libevent (
http://code.google.com/p/pyevent/)
regall
Июнь 7, 2011 19:44:10
Twisted, Tornado
max1
Июнь 10, 2011 00:09:00
Спасибо за советы.
Поставил 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:23:06
max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.
max1
Июнь 10, 2011 00:30:32
Александр Кошелев
max1
попробовал приконнектится к 8888, получилось. но Hello, world не выводит….
Так вы http запрос не сделали.
А не подбросите простой пример для работы без http?
bw
Июнь 10, 2011 05:54:37
> Поставил tornado.
Теперь удали и поставь concurrence, syncless или eventlet.
Нужен кто-то один, примеры там есть. Есть ещё circuits, но я с ним не работал. Это всё из зелёных (greenlet/stackless, микронити).
Как я понял задача у тебя не большая (по сетевой части), так что такой монстр как Twisted тебе не нужен.
..bw
regall
Июнь 10, 2011 11:09:59
Согласен с bw. Если у вас 1 маленький проект, смысл твистеда пропадает, так как дольше будете разбиратся, что к чему.
Как вариант можете использовать зеленые потоки, как посоветовал bw, либо Stackless Python, в котором есть встроенный механизм микронитей - тасклеты.