Использование aiohttp на базе ASGI сервера
Есть какое-то приложение, которое выполняется при помощи aiohttp.
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/{name}', handle)])
if __name__ == '__main__':
web.run_app(app)
Проблема заключается в том, что необходимо каким-нибудь образом запустить aiohttp сервер на базе ASGI сервера hypercorn (аналог uvicorn). Проблема заключается в том, что библиотека aiohttp не поддерживает стандарт ASGI (issue 1, issue 2), за счёт чего запуск такого приложения на этом стандарте невозможен.
Какие могут существовать решения данной проблемы?
Мне известна библиотека aiohttp-asgi, которая позволяет запустить FastAPI приложение вместе с приложением на aiohttp. Но данный вариант меня не устраивает, т.к. в проект будет добавлено огромное количество зависимостей (FastAPI, Starlette, httpx, jinja2, python-multipart и т. д.).
Важным ограничением является то, что запускаться приложение должно на чистом hypercorn без использования каких-то форков, вмешательств в код сервера, специальных параметров запуска asgi-приложения и т. д.
Считаю важным также отметить, что сервера со стандартом ASGI в Python использует словари и списки в качестве интерфейсных структур данных, когда как aiohttp успешно применяет свою библиотеку multidict.