diff --git a/app/params.py b/app/params.py index 701acfa..4445f40 100644 --- a/app/params.py +++ b/app/params.py @@ -17,6 +17,7 @@ class Parameters: timeout: int = 120 db_uri: str = "sqlite://db.sqlite" cache_uri: str = "memory://" + api_rate_limit: str = "100/minute" @classmethod def from_namespace(cls, args: argparse.Namespace) -> Parameters: @@ -128,5 +129,12 @@ def parse_parameters(args: typing.Sequence[str]) -> Parameters: default=default_values.cache_uri, help_txt="cache connection URI", ) + __add_arg_str( + parser, + "--api-rate-limit", + env_var="API_RATE_LIMIT", + default=default_values.api_rate_limit, + help_txt="API rate limit (flask-limiter syntax)", + ) parsed_args = parser.parse_args(args) return Parameters.from_namespace(parsed_args) diff --git a/app/server.py b/app/server.py index 104ce22..b5cfe10 100644 --- a/app/server.py +++ b/app/server.py @@ -27,7 +27,7 @@ class Server(gunicorn.app.base.BaseApplication): self.limiter = flask_limiter.Limiter( flask_limiter.util.get_remote_address, app=self.app, - default_limits=["100 per minute"], + default_limits=[params.api_rate_limit], storage_uri=params.cache_uri, ) self._index_content: str | None = None