From 0b241902a7c9499de2a46f261518cb0affbb7dd9 Mon Sep 17 00:00:00 2001 From: HappyZ Date: Fri, 26 May 2023 23:39:31 -0700 Subject: [PATCH] [FE] adds a rate limiter on random image pulling --- frontend.py | 14 ++++++++++++-- requirements.txt | 1 + templates/index.html | 6 ++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/frontend.py b/frontend.py index 1992817..229cf68 100644 --- a/frontend.py +++ b/frontend.py @@ -4,6 +4,8 @@ from flask import jsonify from flask import Flask from flask import render_template from flask import request +from flask_limiter import Limiter +from flask_limiter.util import get_remote_address from utilities.constants import LOGGER_NAME_FRONTEND @@ -26,6 +28,10 @@ from utilities.database import Database logger = Logger(name=LOGGER_NAME_FRONTEND) database = Database(logger) app = Flask(__name__) +limiter = Limiter( + get_remote_address, + app=app, +) @app.route("/add_job", methods=["POST"]) @@ -115,18 +121,22 @@ def get_jobs(): user = database.validate_user(req[APIKEY]) if not user: return "", 401 - + # define max number of jobs to fetch from db job_count_limit = 20 if UUID in req: - jobs = database.get_jobs(job_uuid=req[UUID], apikey=req[APIKEY], limit_count=job_count_limit) + jobs = database.get_jobs( + job_uuid=req[UUID], apikey=req[APIKEY], limit_count=job_count_limit + ) else: jobs = database.get_jobs(apikey=req[APIKEY], limit_count=job_count_limit) return jsonify({"jobs": jobs}) + @app.route("/random_jobs", methods=["GET"]) +@limiter.limit("1/second") def random_jobs(): # define max number of jobs to fetch from db job_count_limit = 20 diff --git a/requirements.txt b/requirements.txt index cfbd91f..351fc2b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ scikit-image==0.20.0 torch==2.0.0 transformers==4.28.1 sentencepiece==0.1.99 +Flask-Limiter==3.3.1 diff --git a/templates/index.html b/templates/index.html index 24135ec..2c624d0 100644 --- a/templates/index.html +++ b/templates/index.html @@ -517,7 +517,7 @@ function parsePromptString(prompt, is_negative) { // Split the prompt input by "," - var promptArray = prompt.replace(/[^\w\s,\p{Script=Han}]/gu, '').split(/[,,]/); + var promptArray = prompt.replace(/[^\w\s,\p{Script=Han}]|\d/gu, '').split(/[,,]/); var result = ""; for (var i = 0; i < promptArray.length; i++) { @@ -729,9 +729,7 @@ }, error: function (xhr, status, error) { - // Handle error response - console.log(xhr.responseText); - $('#othersJobList').html("found nothing"); + $('#othersJobList').html(error); } }); });