Я использую http-сервер для обработки слабых вызовов API, которые приходят на конечную точку events
. Неполная документация предполагает, что приложение (этот сервер) должно подтвердить получение запроса в течение 3 секунд (что может быть достигнуто пустым телом и статусом = 200). Моя обработка запроса занимает более 3 секунд, поэтому я хочу немедленно вернуться, как только получу запрос с пустым ответом, а затем обработать данные. Это код, который я использую:
from aiohttp import web
routes = web.RouteTableDef()
app = web.Application()
async def process(data):
# Do Some Processing which takes more than 5 seconds
@routes.post('/events')
async def handle_event(request):
post_data = await request.json()
await process(post_data)
return web.Response(body="", status=200)
# I want to do this immediately then process() data afterwards
app.add_routes(routes)
web.run_app(app, port=3000)
Как мне немедленно вернуться, а затем обработать данные (которые включают в себя некоторые запросы к базе данных и отправку слабого сообщения с использованием API)
Я попытался создать задачу asyncio, но возврат не происходит, пока не завершится выполнение этой задачи (что понятно):
process_task = asyncio.create_task(process)
await task