python - Flask:如果最后一个请求尚未完成,如何忽略新请求
问题描述
我正在尝试仅通过一次调用来构建 REST API。
有时,程序需要长达 30 秒才能返回响应。但是,如果用户认为该服务滞后 - 他拨打了一个新电话,我的应用程序返回错误代码 500(内部服务器错误)的响应。
现在,如果最后一个请求还没有准备好,我可以阻止任何新请求。有什么简单的方法吗?
我知道有很多像 Celery 这样的排队管理器,但我不想让我的应用程序因任何大型依赖项/等而超载。
解决方案
您可以使用Flask-Limiter忽略来自该远程地址的新请求。
pip install Flask-Limiter
检查此快速入门:
from flask import Flask
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
app = Flask(__name__)
limiter = Limiter(
app,
key_func=get_remote_address,
default_limits=["200 per day", "50 per hour"]
)
@app.route("/slow")
@limiter.limit("1 per day")
def slow():
return "24"
@app.route("/fast")
def fast():
return "42"
@app.route("/ping")
@limiter.exempt
def ping():
return "PONG"
如您所见,您可以在一段时间内忽略远程 IP 地址,同时完成您正在运行的进程
文档
检查这两个链接:
推荐阅读
- spring - Thymeleaf 表达式 [#temporals.format( ${event.eventStart} , 'pattern')] @20: EL1043E: 意外令牌。预期为 'rparen())' 但为 'lcurly({)'
- laravel - 如何在没有用户模型的情况下使用策略?
- sql - 奇怪的 Azure SQL 密码验证错误
- sql - 按出现的天数对结果进行分组
- google-cloud-platform - 为 Cloud SQL 自定义服务器证书
- node.js - hapijs v17 中未返回正确的吊杆错误
- android - 如何排除 Kotlin 中测试类的显式Api 警告?
- c++ - 如何为自定义 Makefile 配置 Visual Studio Code C++ 编译?
- excel - For Loop 构建图表
- php - PHP - 从数组中获取组合