我正在运行http服务器来处理到达events
端点的Slack API调用。松弛的文档建议应用程序(此服务器)需要在3秒内确认请求的接收(这可以通过空主体和status = 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