Колба: как игнорировать новые запросы, если последний еще не сделан - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать REST API только с одним вызовом.

Иногда программе требуется до 30 секунд, чтобы вернуть ответ. Но если пользователь считает, что служба отстает - он делает новый вызов, и мое приложение возвращает ответ с кодом ошибки 500 (Внутренняя ошибка сервера).

На данный момент мне достаточно заблокировать любые новые запросы, если последнийне готовЕсть ли какой-нибудь простой способ сделать это?

Я знаю, что есть много администраторов очередей, таких как Celery, но я предпочитаю не перегружать мое приложение какими-либо большими зависимостями / и т.д.

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете использовать 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

Проверьте эти две ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...