Skip to content

Instantly share code, notes, and snippets.

@funseiki
Created July 7, 2016 18:04
Show Gist options
  • Save funseiki/caab87820aea07310ce7f207f812e5d4 to your computer and use it in GitHub Desktop.
Save funseiki/caab87820aea07310ce7f207f812e5d4 to your computer and use it in GitHub Desktop.
import asyncio
import threading
import time
import queue
from aiohttp import web
class Worker:
def __init__(self, queue):
self.queue = queue
self._t = threading.Thread(target=self._doStuff)
return
def _doStuff(self):
while True:
if not self.queue.empty():
print('Received request. Sleeping')
event = self.queue.get()
time.sleep(5)
print('Sleep ended. Firing event')
event.set()
return
def start(self):
self._t.start()
return
class Handler(object):
def __init__(self):
self.queue = queue.Queue()
self.worker = Worker(self.queue)
self.worker.start()
return
async def hello(self, request):
event = asyncio.Event()
self.queue.put(event)
await event.wait()
print("Event fired!") # Never gets here
return web.json_response(data={'hello': 'world'})
app = web.Application()
handler = Handler()
app.router.add_route('GET', '/', handler.hello)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment