import asyncio queue = asyncio.Queue(maxsize=2) @asyncio.coroutine def consumer(): while True: print(queue) job = yield from queue.get() print(job) yield from asyncio.sleep(job) queue.task_done() @asyncio.coroutine def main(): asyncio.async(consumer()) yield from queue.put(1) yield from queue.put(2) yield from queue.put(3) yield from queue.put(4) yield from queue.put(5) yield from queue.put(6) yield from queue.put(7) yield from queue.put(8) yield from queue.put(9) yield from queue.join() if __name__ == '__main__': asyncio.get_event_loop().run_until_complete(main())