Skip to content

Commit

Permalink
fixed profilint initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Neagu committed Jan 31, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 2d90725 commit 4515cc0
Showing 5 changed files with 11 additions and 22 deletions.
13 changes: 1 addition & 12 deletions packages/service-library/src/servicelib/fastapi/profiler.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import Any, Final

from fastapi import FastAPI
@@ -101,14 +99,5 @@ async def _send_wrapper(message):
_profiler.reset()


def setup_profiler(app: FastAPI) -> None:
async def on_startup() -> None:
app.add_middleware(ProfilerMiddleware)

app.add_event_handler("startup", on_startup)


@asynccontextmanager
async def lifespan_profiler(app: FastAPI) -> AsyncIterator[None]:
def initialize_profiler(app: FastAPI) -> None:
app.add_middleware(ProfilerMiddleware)
yield
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
from fastapi_pagination import add_pagination
from models_library.basic_types import BootModeEnum
from packaging.version import Version
from servicelib.fastapi.profiler import setup_profiler
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.tracing import setup_tracing
from servicelib.logging_utils import config_all_loggers

@@ -123,7 +123,7 @@ def init_app(settings: ApplicationSettings | None = None) -> FastAPI:
)

if settings.API_SERVER_PROFILING:
setup_profiler(app)
initialize_profiler(app)

if app.state.settings.API_SERVER_PROMETHEUS_INSTRUMENTATION_ENABLED:
setup_prometheus_instrumentation(app)
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
from models_library.basic_types import BootModeEnum
from servicelib.fastapi import timing_middleware
from servicelib.fastapi.openapi import override_fastapi_openapi_method
from servicelib.fastapi.profiler import ProfilerMiddleware
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
@@ -61,7 +61,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:

# MIDDLEWARES
if app.state.settings.CATALOG_PROFILING:
app.add_middleware(ProfilerMiddleware)
initialize_profiler(app)

if settings.SC_BOOT_MODE != BootModeEnum.PRODUCTION:
# middleware to time requests (ONLY for development)
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@
get_common_oas_options,
override_fastapi_openapi_method,
)
from servicelib.fastapi.profiler import setup_profiler
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.tracing import setup_tracing
from servicelib.logging_utils import config_all_loggers

@@ -204,7 +204,7 @@ def init_app(settings: AppSettings | None = None) -> FastAPI:
instrumentation.setup(app)

if settings.DIRECTOR_V2_PROFILING:
setup_profiler(app)
initialize_profiler(app)

# setup app --
app.add_event_handler("startup", on_startup)
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@
from fastapi import FastAPI
from servicelib.fastapi.lifespan_utils import LifespanContextManager, combine_lfiespans
from servicelib.fastapi.openapi import override_fastapi_openapi_method
from servicelib.fastapi.profiler import lifespan_profiler
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.prometheus_instrumentation import (
initialize_prometheus_instrumentation,
lifespan_prometheus_instrumentation,
@@ -66,9 +66,6 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
get_lifespan_tracing(app_settings.DYNAMIC_SCHEDULER_TRACING, APP_NAME)
)

if app_settings.DYNAMIC_SCHEDULER_PROFILING:
lifespans.append(lifespan_profiler)

app = FastAPI(
title=f"{PROJECT_NAME} web API",
description=SUMMARY,
@@ -84,6 +81,9 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:

initialize_prometheus_instrumentation(app)

if app_settings.DYNAMIC_SCHEDULER_PROFILING:
initialize_profiler(app)

# STATE
app.state.settings = app_settings
assert app.state.settings.API_VERSION == API_VERSION # nosec

0 comments on commit 4515cc0

Please sign in to comment.