Skip to content

Commit 24ddaeb

Browse files
committed
Fixen
1 parent d1d3cbf commit 24ddaeb

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

app/config.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from functools import lru_cache
2+
13
from pydantic_settings import BaseSettings, SettingsConfigDict
24

35

@@ -10,4 +12,11 @@ class Settings(BaseSettings):
1012
model_config = SettingsConfigDict(env_file=".env")
1113

1214

13-
settings = Settings()
15+
@lru_cache
16+
def get_settings():
17+
"""Return the application settings.
18+
19+
A function so the actual construction is deferred until needed (avoiding test issues), and
20+
lru_cached for efficiency.
21+
"""
22+
return Settings()

app/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from fastapi.middleware.cors import CORSMiddleware
77
from mangum import Mangum
88

9-
from app.config import settings
9+
from app.config import get_settings
1010
from app.explain import process_request
1111
from app.explain_api import (
1212
AvailableOptions,
@@ -21,7 +21,7 @@
2121
logger = logging.getLogger()
2222
logger.setLevel(logging.INFO)
2323

24-
app = FastAPI(root_path=settings.root_path)
24+
app = FastAPI(root_path=get_settings().root_path)
2525

2626
# Configure CORS - allows all origins for public API
2727
app.add_middleware(
@@ -34,7 +34,7 @@
3434
)
3535
handler = Mangum(app)
3636

37-
anthropic_client = Anthropic(api_key=settings.anthropic_api_key)
37+
anthropic_client = Anthropic(api_key=get_settings().anthropic_api_key)
3838
logger.info(f"Anthropic SDK version: {anthropic_version}")
3939

4040

app/metrics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from aws_embedded_metrics.logger.metrics_logger import MetricsLogger
66
from aws_embedded_metrics.logger.metrics_logger_factory import create_metrics_logger
77

8-
from app.config import settings
8+
from app.config import get_settings
99

1010

1111
class MetricsProvider(ABC):
@@ -52,7 +52,7 @@ async def get_metrics_provider() -> AsyncGenerator[MetricsProvider]:
5252
When metrics are enabled, creates a CloudWatch metrics provider and ensures
5353
proper flushing. When disabled, provides a no-op implementation.
5454
"""
55-
if settings.metrics_enabled:
55+
if get_settings().metrics_enabled:
5656
metrics_logger = create_metrics_logger()
5757
metrics_logger.set_namespace("CompilerExplorer")
5858
provider = CloudWatchMetricsProvider(metrics_logger)

0 commit comments

Comments
 (0)