Я пытаюсь использовать aiohttp 3.6.2 как сервер, так и клиент: Для webhook выполните работу:
1) Получите JSON -запрос из службы 2) Быстрая отправка HTTP 200 OK обратно в службу 3) Сделано дополнительная работа после: сделать http-запрос на медленный веб-сервис (ответ 2-5 se c)
Я не понимаю, как выполнить работу после того, как представление (или обработчик) вернуло web.Response (text = " OK ")?
Текущее представление: (оно медленное, потому что медленный http_request выполняется до ответа) view.py:
async def make_http_request(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
print(await resp.text())
async def work_on_request(request):
url = (await request.json())['url']
await make_http_request(url)
return aiohttp.web.Response(text='all ok')
rout.py:
from views import work_on_request
def setup_routes(app):
app.router.add_get('/', work_on_request)
сервер .py:
from aiohttp import web
from routes import setup_routes
import asyncio
app = web.Application()
setup_routes(app)
web.run_app(app)
Итак, обходной путь для меня - запустить еще один поток с другим event_l oop, или, может быть, вы знаете, как добавить какую-то работу к текущему событию l oop?