Тайм-аут Python aiohttp-sse после ровно 6 запросов - PullRequest
0 голосов
/ 03 июля 2018

Я пишу 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, статические страницы также не работали - я также получал тайм-аут при попытке их загрузить.

Любая помощь будет оценена.

1 Ответ

0 голосов
...