import asyncio
from aiohttp import web
async def root_handler(request):
return web.Response(text="root")
async def long_polling_1(request):
q = request.app['q']
try:
data = await asyncio.wait_for(q.get(), 15.0)
text = f"recieved data: {data}"
except asyncio.TimeoutError:
text = f"timeout! no data"
return web.Response(text=text)
async def handler_msg(request):
q = request.app['q']
msg = request.match_info['msg']
q.put_nowait(f" === message: {msg} ======")
return web.Response(text=f"message {msg} sent to queue")
if __name__ == '__main__':
app = web.Application()
app.add_routes([
web.get('/', root_handler),
web.get('/long_polling/', long_polling_1),
web.get('/msg/{msg}/', handler_msg),
])
app['q'] = asyncio.Queue()
web.run_app(app, port=8040)
aW1wb3J0IGFzeW5jaW8KCmZyb20gYWlvaHR0cCBpbXBvcnQgd2ViCgphc3luYyBkZWYgcm9vdF9oYW5kbGVyKHJlcXVlc3QpOgogICAgcmV0dXJuIHdlYi5SZXNwb25zZSh0ZXh0PSJyb290IikKCgphc3luYyBkZWYgbG9uZ19wb2xsaW5nXzEocmVxdWVzdCk6CiAgICBxID0gcmVxdWVzdC5hcHBbJ3EnXQogICAgdHJ5OgogICAgICAgIGRhdGEgPSBhd2FpdCBhc3luY2lvLndhaXRfZm9yKHEuZ2V0KCksIDE1LjApCiAgICAgICAgdGV4dCA9IGYicmVjaWV2ZWQgZGF0YToge2RhdGF9IgogICAgZXhjZXB0IGFzeW5jaW8uVGltZW91dEVycm9yOgogICAgICAgIHRleHQgPSBmInRpbWVvdXQhIG5vIGRhdGEiCiAgICByZXR1cm4gd2ViLlJlc3BvbnNlKHRleHQ9dGV4dCkKCmFzeW5jIGRlZiBoYW5kbGVyX21zZyhyZXF1ZXN0KToKICAgIHEgPSByZXF1ZXN0LmFwcFsncSddCiAgICBtc2cgPSByZXF1ZXN0Lm1hdGNoX2luZm9bJ21zZyddCiAgICBxLnB1dF9ub3dhaXQoZiIgPT09IG1lc3NhZ2U6IHttc2d9ID09PT09PSIpCiAgICByZXR1cm4gd2ViLlJlc3BvbnNlKHRleHQ9ZiJtZXNzYWdlIHttc2d9IHNlbnQgdG8gcXVldWUiKQoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIGFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCiAgICBhcHAuYWRkX3JvdXRlcyhbCiAgICAgICAgd2ViLmdldCgnLycsIHJvb3RfaGFuZGxlciksCiAgICAgICAgd2ViLmdldCgnL2xvbmdfcG9sbGluZy8nLCBsb25nX3BvbGxpbmdfMSksCiAgICAgICAgd2ViLmdldCgnL21zZy97bXNnfS8nLCBoYW5kbGVyX21zZyksCiAgICAgICAgXSkKICAgIGFwcFsncSddID0gYXN5bmNpby5RdWV1ZSgpCiAgICB3ZWIucnVuX2FwcChhcHAsIHBvcnQ9ODA0MCkK