Я пишу SSE-сервер в Python 3.6 с aiohttp-SSE. Однако всякий раз, когда я делаю ровно шесть запросов к серверу, сервер прерывает все последующие подключения (я просто вижу постоянное «ожидание» в Google Chrome). Обратите внимание, ошибки не выдаются. Вот мой код:
import asyncio
import json
import aiohttp
from aiohttp_sse import sse_response
from aiohttp.web import Application, Response
async def subscribe(request):
print('new sub')
async with sse_response(request) as resp:
await asyncio.sleep(1)
await resp.send('hello')
await asyncio.sleep(4)
await resp.send('hello')
await asyncio.sleep(8)
await resp.send('hello')
return resp
async def static_page(request):
return Response(text = open('static_page.html', 'r').read(), content_type = 'text/html')
# grab asyncio eventloop
loop = asyncio.get_event_loop()
# instantiate app
app = Application(loop = loop)
app.router.add_route('GET', '/sub', subscribe)
app.router.add_route('GET', '/', static_page)
# startup
aiohttp.web.run_app(app, host = '0.0.0.0', port = 8080)
Я добавил оператор print в функцию подписки, которая печатает 'new sub.' После шести подключений этот оператор печати даже не запускается. Таким образом, я знаю, что функция подписки не вызывается после шести соединений sse. Я думаю, что это может быть проблема с конфигурацией aiohttp. Кто-нибудь знает что-нибудь еще об этом?
Еще одна вещь, которую я заметил, заключалась в том, что, когда тайм-ауты начинали происходить после шести соединений sse, статические страницы также не работали - я также получал тайм-аут при попытке их загрузить.
Любая помощь будет оценена.