我有一个非常简单的aiohttp Web服务器:
from aiohttp import web
import time
async def hello(request):
time.sleep(2) # heavy calculations goes here
return web.Response(text="Hello, world")
app = web.Application()
app.add_routes([web.get('/search', hello)])
web.run_app(app)
如果用户(在其浏览器中)在短时间内多次请求“ / search?query = xxx”,那么我的“大量计算”将无法达到用户请求的速度。
我想取消旧请求(并向用户发送一条消息,表明他的请求已被取消),并且仅使用计算结果答复最后一个请求。
我该怎么做?
对于带有“增量搜索”的网页,我需要这样做,因此用户可以按输入的速度尽快发送请求。这甚至是解决这个问题的正确方法吗?