首页 > 解决方案 > python aiohttp:如果用户重新请求,则取消处理程序

问题描述

我有一个非常简单的 aiohttp 网络服务器:

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',我的“繁重计算”就无法像用户请求的那样快。

我想取消旧请求(并向用户发送一条消息,说明他的请求已被取消),并且只回复最后一个请求并给出计算结果。

我怎样才能做到这一点?

对于具有“增量搜索”的网页,我需要它,因此用户可以尽可能快地发送请求。这甚至是解决这个问题的正确方法吗?

标签: pythonaiohttp

解决方案


推荐阅读