首页 > 解决方案 > Flask:如果最后一个请求尚未完成,如何忽略新请求

问题描述

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

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

现在,如果最后一个请求还没有准备好,我可以阻止任何新请求。有什么简单的方法吗?

我知道有很多像 Celery 这样的排队管理器,但我不想让我的应用程序因任何大型依赖项/等而超载。

标签: pythonrestapihttpflask

解决方案


您可以使用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 地址,同时完成您正在运行的进程

文档

检查这两个链接:


推荐阅读