summaryrefslogtreecommitdiff
path: root/examples/eventloop
diff options
context:
space:
mode:
Diffstat (limited to 'examples/eventloop')
-rw-r--r--examples/eventloop/asyncweb.py96
-rw-r--r--examples/eventloop/echo.py27
-rw-r--r--examples/eventloop/echostream.py24
-rw-r--r--examples/eventloop/web.py46
4 files changed, 0 insertions, 193 deletions
diff --git a/examples/eventloop/asyncweb.py b/examples/eventloop/asyncweb.py
deleted file mode 100644
index 06b03f3..0000000
--- a/examples/eventloop/asyncweb.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""Async web request example with tornado.
-
-Requests to localhost:8888 will be relayed via 0MQ to a slow responder,
-who will take 1-5 seconds to respond. The tornado app will remain responsive
-duriung this time, and when the worker replies, the web request will finish.
-
-A '.' is printed every 100ms to demonstrate that the zmq request is not blocking
-the event loop.
-"""
-
-
-import sys
-import random
-import threading
-import time
-
-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
-from tornado import web
-
-
-def slow_responder():
- """thread for slowly responding to replies."""
- ctx = zmq.Context.instance()
- socket = ctx.socket(zmq.REP)
- socket.linger = 0
- socket.bind('tcp://127.0.0.1:5555')
- i=0
- while True:
- msg = socket.recv()
- print "\nworker received %r\n" % msg
- time.sleep(random.randint(1,5))
- socket.send(msg + " to you too, #%i" % i)
- i+=1
-
-def dot():
- """callback for showing that IOLoop is still responsive while we wait"""
- sys.stdout.write('.')
- sys.stdout.flush()
-
-def printer(msg):
- print (msg)
-
-class TestHandler(web.RequestHandler):
-
- @web.asynchronous
- def get(self):
- ctx = zmq.Context.instance()
- s = ctx.socket(zmq.REQ)
- s.connect('tcp://127.0.0.1:5555')
- # send request to worker
- s.send('hello')
- loop = ioloop.IOLoop.instance()
- self.stream = zmqstream.ZMQStream(s)
- self.stream.on_recv(self.handle_reply)
-
- def handle_reply(self, msg):
- # finish web request with worker's reply
- reply = msg[0]
- print "\nfinishing with %r\n" % reply,
- self.stream.close()
- self.write(reply)
- self.finish()
-
-def main():
- worker = threading.Thread(target=slow_responder)
- worker.daemon=True
- worker.start()
-
- application = web.Application([(r"/", TestHandler)])
- beat = ioloop.PeriodicCallback(dot, 100)
- beat.start()
- application.listen(8888)
- try:
- ioloop.IOLoop.instance().start()
- except KeyboardInterrupt:
- print ' Interrupted'
-
-
-if __name__ == "__main__":
- main()
-
diff --git a/examples/eventloop/echo.py b/examples/eventloop/echo.py
deleted file mode 100644
index 9be079b..0000000
--- a/examples/eventloop/echo.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env python
-"""A trivial ZMQ echo server using the eventloop.
-
-Authors
--------
-* MinRK
-"""
-
-import zmq
-from zmq.eventloop import ioloop
-
-loop = ioloop.IOLoop.instance()
-
-ctx = zmq.Context()
-s = ctx.socket(zmq.REP)
-s.bind('tcp://127.0.0.1:5555')
-
-def rep_handler(sock, events):
- # We don't know how many recv's we can do?
- msg = sock.recv()
- # No guarantee that we can do the send. We need a way of putting the
- # send in the event loop.
- sock.send(msg)
-
-loop.add_handler(s, rep_handler, zmq.POLLIN)
-
-loop.start() \ No newline at end of file
diff --git a/examples/eventloop/echostream.py b/examples/eventloop/echostream.py
deleted file mode 100644
index 04c1532..0000000
--- a/examples/eventloop/echostream.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-"""Adapted echo.py to put the send in the event loop using a ZMQStream.
-
-Authors
--------
-* MinRK
-"""
-
-import zmq
-from zmq.eventloop import ioloop, zmqstream
-loop = ioloop.IOLoop.instance()
-
-ctx = zmq.Context()
-s = ctx.socket(zmq.REP)
-s.bind('tcp://127.0.0.1:5555')
-stream = zmqstream.ZMQStream(s, loop)
-
-def echo(msg):
- print " ".join(msg)
- stream.send_multipart(msg)
-
-stream.on_recv(echo)
-
-loop.start() \ No newline at end of file
diff --git a/examples/eventloop/web.py b/examples/eventloop/web.py
deleted file mode 100644
index 1285f95..0000000
--- a/examples/eventloop/web.py
+++ /dev/null
@@ -1,46 +0,0 @@
-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()
-
-