From 8761af718d110a63a2a716e7ff94949717f315b4 Mon Sep 17 00:00:00 2001 From: Claas Augner <github@caugner.de> Date: Tue, 19 Jan 2021 18:53:53 +0100 Subject: [PATCH] feat(batch): add --batch-limit --- README.md | 1 + app/app.py | 7 ++++++- main.py | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ec6564b..7c46c73 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ docker-compose up -d --build | --port | Set port to bind the server to | `5000` | | --char-limit | Set character limit | `No limit` | | --req-limit | Set maximum number of requests per minute per client | `No limit` | +| --batch-limit | Set maximum number of texts to translate in a batch request | `No limit` | | --ga-id | Enable Google Analytics on the API client page by providing an ID | `No tracking` | | --debug | Enable debug environment | `False` | | --ssl | Whether to enable SSL | `False` | diff --git a/app/app.py b/app/app.py index f398b8b..79634f8 100644 --- a/app/app.py +++ b/app/app.py @@ -13,7 +13,7 @@ def get_remote_address(): return ip -def create_app(char_limit=-1, req_limit=-1, ga_id=None, debug=False, frontend_language_source="en", frontend_language_target="en"): +def create_app(char_limit=-1, req_limit=-1, batch_limit=-1, ga_id=None, debug=False, frontend_language_source="en", frontend_language_target="en"): from app.init import boot boot() @@ -207,6 +207,11 @@ def create_app(char_limit=-1, req_limit=-1, ga_id=None, debug=False, frontend_la batch = isinstance(q, list) + if batch and batch_limit != -1: + batch_size = len(q) + if batch_limit < batch_size: + abort(400, description="Invalid request: Request (%d) exceeds text limit (%d)" % (batch_size, batch_limit)) + if char_limit != -1: if batch: chars = sum([len(text) for text in q]) diff --git a/main.py b/main.py index 36e4ef6..47e7c43 100644 --- a/main.py +++ b/main.py @@ -10,6 +10,8 @@ parser.add_argument('--char-limit', default=-1, type=int, metavar="<number of ch help='Set character limit (%(default)s)') parser.add_argument('--req-limit', default=-1, type=int, metavar="<number>", help='Set maximum number of requests per minute per client (%(default)s)') +parser.add_argument('--batch-limit', default=-1, type=int, metavar="<number of texts>", + help='Set maximum number of texts to translate in a batch request (%(default)s)') parser.add_argument('--ga-id', type=str, default=None, metavar="<GA ID>", help='Enable Google Analytics on the API client page by providing an ID (%(default)s)') parser.add_argument('--debug', default=False, action="store_true", @@ -25,8 +27,9 @@ args = parser.parse_args() if __name__ == "__main__": - app = create_app(char_limit=args.char_limit, + app = create_app(char_limit=args.char_limit, req_limit=args.req_limit, + batch_limit=args.batch_limit, ga_id=args.ga_id, debug=args.debug, frontend_language_source=args.frontend_language_source, -- GitLab