diff --git a/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/fastapi.py b/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/fastapi.py index ccf19fb..4afad09 100644 --- a/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/fastapi.py +++ b/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/fastapi.py @@ -3,6 +3,8 @@ import copy import uvicorn import sys +from .settings import Settings as APISettings + async def websocket_tickers( websocket: fastapi.WebSocket, ) -> None: @@ -23,8 +25,8 @@ def run(args: list[str]): uvicorn.run( create_app(), - host='0.0.0.0', - port=80, + host=APISettings.singleton().uvicorn_host, + port=APISettings.singleton().uvicorn_port, loop='uvloop', log_config=log_config, ) diff --git a/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/settings.py b/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/settings.py new file mode 100644 index 0000000..01137a4 --- /dev/null +++ b/deps/test-task-2025-06-30-v1/python/online/fxreader/pr34/test_task_2025_06_30_v1/async_api/settings.py @@ -0,0 +1,18 @@ +import pydantic +import pydantic_settings + +from typing import (ClassVar, Optional,) + + +class Settings(pydantic_settings.BaseSettings): + uvicorn_port : int = 80 + uvicorn_host : str = '127.0.0.1' + + _singleton : ClassVar[Optional['Settings']] = None + + @classmethod + def singleton(cls) -> 'Settings': + if cls._singleton is None: + cls._singleton = Settings.model_validate({}) + + return cls._singleton