From 7d5c3dcd969161322deed6c43f8a6a3cb92c3369 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 11 Nov 2014 11:53:55 -0500 Subject: upgrade to 14.4.1 --- examples/eventloop/web.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 examples/eventloop/web.py (limited to 'examples/eventloop/web.py') diff --git a/examples/eventloop/web.py b/examples/eventloop/web.py new file mode 100644 index 0000000..1285f95 --- /dev/null +++ b/examples/eventloop/web.py @@ -0,0 +1,46 @@ +import zmq +from zmq.eventloop import ioloop, zmqstream + +""" +ioloop.install() must be called prior to instantiating *any* tornado objects, +and ideally before importing anything from tornado, just to be safe. + +install() sets the singleton instance of tornado.ioloop.IOLoop with zmq's +IOLoop. If this is not done properly, multiple IOLoop instances may be +created, which will have the effect of some subset of handlers never being +called, because only one loop will be running. +""" + +ioloop.install() + +import tornado +import tornado.web + + +""" +this application can be used with echostream.py, start echostream.py, +start web.py, then every time you hit http://localhost:8888/, +echostream.py will print out 'hello' +""" + +def printer(msg): + print (msg) + +ctx = zmq.Context() +s = ctx.socket(zmq.REQ) +s.connect('tcp://127.0.0.1:5555') +stream = zmqstream.ZMQStream(s) +stream.on_recv(printer) + +class TestHandler(tornado.web.RequestHandler): + def get(self): + print ("sending hello") + stream.send("hello") + self.write("hello") +application = tornado.web.Application([(r"/", TestHandler)]) + +if __name__ == "__main__": + application.listen(8888) + ioloop.IOLoop.instance().start() + + -- cgit v1.2.3