Version 0.3.0
Some checks failed
Run linters on applied template / Python 3.13 lint and build (push) Failing after 2m36s

Changes:
- fix double exception message in main request_processing span
- add OpenSearch to Jaeger and OpenTelemetry Logs
- add optional OpenTelemetry Logs Exporter to structlog
- update deploy README
This commit is contained in:
2025-12-06 19:41:33 +03:00
parent 34c1347402
commit b8acb017fd
16 changed files with 966 additions and 450 deletions

View File

@@ -95,11 +95,24 @@ def get_app(prefix: str = "/api") -> FastAPI:
application.state.config = app_config
exception_mapper = _get_exception_mapper(app_config.app.debug)
logger = configure_logging(
app_config.observability.logging,
tracing_enabled=app_config.observability.jaeger is not None,
)
metrics = init_metrics()
metrics_dep.init_dispencer(application, metrics)
exception_mapper = _get_exception_mapper(app_config.app.debug)
connection_manager = PostgresConnectionManager(
master=app_config.db.master,
replicas=app_config.db.replicas,
logger=logger,
application_name=f"{{project_slug}}_{VERSION}",
)
urls_mapper = URLsMapper(app_config.observability.prometheus.urls_mapping)
connection_manager_dep.init_dispencer(application, connection_manager)
metrics_dep.init_dispencer(application, metrics)
logger_dep.init_dispencer(application, logger)
application.add_middleware(
ObservabilityMiddleware,
exception_mapper=exception_mapper,
@@ -108,7 +121,7 @@ def get_app(prefix: str = "/api") -> FastAPI:
)
application.add_middleware(
ExceptionHandlerMiddleware,
debug=[False], # reinitialized on startup
debug=[app_config.app.debug],
exception_mapper=exception_mapper,
)
@@ -122,20 +135,10 @@ async def lifespan(application: FastAPI):
Initializes database connection in pass_services_dependencies middleware.
"""
app_config: {{ProjectName}}Config = application.state.config
loggers_dict = {logger_config.filename: logger_config.level for logger_config in app_config.logging.files}
logger = configure_logging(app_config.logging.level, loggers_dict)
logger = logger_dep.obtain(application)
await logger.ainfo("application is being configured", config=app_config.to_order_dict())
connection_manager = PostgresConnectionManager(
master=app_config.db.master,
replicas=app_config.db.replicas,
logger=logger,
application_name=f"{{project_slug}}_{VERSION}",
)
connection_manager_dep.init_dispencer(application, connection_manager)
logger_dep.init_dispencer(application, logger)
for middleware in application.user_middleware:
if middleware.cls == ExceptionHandlerMiddleware:
middleware.kwargs["debug"][0] = app_config.app.debug