Flask:如果最后一个请求尚未完成,如何忽略新请求

时间:2019-10-28 15:07:05

标签: python rest api http flask

我正在尝试仅通过一个调用来构建REST API。

有时,程序最多需要30秒才能返回响应。但是,如果用户认为服务滞后-他拨打了新电话,我的应用返回了错误代码500(内部服务器错误)的响应。

就目前而言,如果最后一个请求尚未准备就绪,我就可以阻止任何新请求。有什么简单的方法吗?

我知道有很多像Celery这样的排队管理器,但是我不希望我的应用程序有任何大的依赖关系/等重载。

1 个答案:

答案 0 :(得分:0)

您可以使用 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地址

DOCS

检查这两个链接: