]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Document queues.
authorA. Jesse Jiryu Davis <jesse@mongodb.com>
Sat, 4 Apr 2015 13:08:22 +0000 (09:08 -0400)
committerA. Jesse Jiryu Davis <jesse@mongodb.com>
Sat, 4 Apr 2015 13:08:22 +0000 (09:08 -0400)
docs/queues.rst

index 01df4940bda8becb38e3d92127bc211f31bd0d54..a01ca60d850f2d9e762bf99efa0828990653166a 100644 (file)
@@ -3,5 +3,112 @@
 
 .. versionadded:: 4.2
 
+.. testsetup::
+
+    from tornado import ioloop, gen, queues
+    io_loop = ioloop.IOLoop.current()
+
 .. automodule:: tornado.queues
+
+   Classes
+   -------
+
+   Queue
+   ^^^^^
+   .. autoclass:: Queue
     :members:
+
+    .. testcode::
+
+        q = queues.Queue(maxsize=2)
+
+        @gen.coroutine
+        def consumer():
+            while True:
+                item = yield q.get()
+                try:
+                    print('Doing work on %s' % item)
+                    yield gen.sleep(0.01)
+                finally:
+                    q.task_done()
+
+        @gen.coroutine
+        def producer():
+            for item in range(5):
+                yield q.put(item)
+                print('Put %s' % item)
+
+        @gen.coroutine
+        def main():
+            consumer()           # Start consumer.
+            yield producer()     # Wait for producer to put all tasks.
+            yield q.join()       # Wait for consumer to finish all tasks.
+            print('Done')
+
+        io_loop.run_sync(main)
+
+    .. testoutput::
+
+        Put 0
+        Put 1
+        Put 2
+        Doing work on 0
+        Doing work on 1
+        Put 3
+        Doing work on 2
+        Put 4
+        Doing work on 3
+        Doing work on 4
+        Done
+
+
+   PriorityQueue
+   ^^^^^^^^^^^^^
+
+    .. testcode::
+
+        q = queues.PriorityQueue()
+        q.put((1, 'medium-priority item'))
+        q.put((0, 'high-priority item'))
+        q.put((10, 'low-priority item'))
+
+        print(q.get_nowait())
+        print(q.get_nowait())
+        print(q.get_nowait())
+
+    .. testoutput::
+
+        (0, 'high-priority item')
+        (1, 'medium-priority item')
+        (10, 'low-priority item')
+
+   LifoQueue
+   ^^^^^^^^^
+
+    .. testcode::
+
+        q = queues.LifoQueue()
+        q.put(3)
+        q.put(2)
+        q.put(1)
+
+        print(q.get_nowait())
+        print(q.get_nowait())
+        print(q.get_nowait())
+
+    .. testoutput::
+
+        1
+        2
+        3
+
+   Exceptions
+   ----------
+
+   QueueEmpty
+   ^^^^^^^^^^
+   .. autoclass:: QueueEmpty
+
+   QueueFull
+   ^^^^^^^^^
+   .. autoclass:: QueueFull