python - 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',我的“繁重计算”就无法像用户请求的那样快。
我想取消旧请求(并向用户发送一条消息,说明他的请求已被取消),并且只回复最后一个请求并给出计算结果。
我怎样才能做到这一点?
对于具有“增量搜索”的网页,我需要它,因此用户可以尽可能快地发送请求。这甚至是解决这个问题的正确方法吗?
解决方案
推荐阅读
- python - 有没有办法在熊猫中对 df 进行分组,然后一次将回归模型中的一列值添加到 df 中?
- java - 在java中测试“Volatile”的正确方法
- c++ - free():使用 c++ 在 tcache 2 中检测到双重空闲
- java - 扫描奇异数组索引内容的方法?
- celery - 撤销多个 celery 任务
- python - 如何在烧瓶 + python + html 应用程序中的列表元素下方获取标签
- c# - 使用 System.Text.Json 对继承 Dictionary 的自定义类型进行序列化不会序列化其他属性
- ios - 重新启动应用程序时,iOS firebase auth 当前用户为零
- javascript - 如何使用jQuery将href的目标id元素scrollIntoView到页面中心
- javascript - 如何对 javascript 对象进行分组?