Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Removed tracing lifespan which should be an initialize #7165

Merged
merged 4 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 1 addition & 14 deletions packages/service-library/src/servicelib/fastapi/tracing.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
"""

import logging
from collections.abc import AsyncIterator

from fastapi import FastAPI
from fastapi_lifespan_manager import State
from httpx import AsyncClient, Client
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
Expand All @@ -17,7 +15,6 @@
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from servicelib.fastapi.lifespan_utils import LifespanGenerator
from servicelib.logging_utils import log_context
from settings_library.tracing import TracingSettings
from yarl import URL
Expand Down Expand Up @@ -64,7 +61,7 @@
HAS_REQUESTS = False


def setup_tracing(
def initialize_tracing(
app: FastAPI, tracing_settings: TracingSettings, service_name: str
) -> None:
if (
Expand Down Expand Up @@ -134,15 +131,5 @@ def setup_tracing(
RequestsInstrumentor().instrument()


def get_lifespan_tracing(
tracing_settings: TracingSettings, service_name: str
) -> LifespanGenerator:
async def _(app: FastAPI) -> AsyncIterator[State]:
setup_tracing(app, tracing_settings, service_name)
yield {}

return _


def setup_httpx_client_tracing(client: AsyncClient | Client):
HTTPXClientInstrumentor.instrument_client(client)
12 changes: 6 additions & 6 deletions packages/service-library/tests/fastapi/test_tracing.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import pytest
from fastapi import FastAPI
from pydantic import ValidationError
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from settings_library.tracing import TracingSettings


Expand Down Expand Up @@ -54,13 +54,13 @@ async def test_valid_tracing_settings(
uninstrument_opentelemetry: Iterator[None],
):
tracing_settings = TracingSettings()
setup_tracing(
initialize_tracing(
mocked_app,
tracing_settings=tracing_settings,
service_name="Mock-Openetlemetry-Pytest",
)
# idempotency
setup_tracing(
initialize_tracing(
mocked_app,
tracing_settings=tracing_settings,
service_name="Mock-Openetlemetry-Pytest",
Expand Down Expand Up @@ -92,7 +92,7 @@ async def test_invalid_tracing_settings(
app = mocked_app
with pytest.raises((BaseException, ValidationError, TypeError)): # noqa: PT012
tracing_settings = TracingSettings()
setup_tracing(
initialize_tracing(
app,
tracing_settings=tracing_settings,
service_name="Mock-Openetlemetry-Pytest",
Expand Down Expand Up @@ -146,13 +146,13 @@ async def test_tracing_setup_package_detection(
importlib.import_module(package_name)
#
tracing_settings = TracingSettings()
setup_tracing(
initialize_tracing(
mocked_app,
tracing_settings=tracing_settings,
service_name="Mock-Openetlemetry-Pytest",
)
# idempotency
setup_tracing(
initialize_tracing(
mocked_app,
tracing_settings=tracing_settings,
service_name="Mock-Openetlemetry-Pytest",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
get_common_oas_options,
override_fastapi_openapi_method,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from servicelib.logging_utils import config_all_loggers

from .._meta import (
Expand Down Expand Up @@ -64,7 +64,7 @@ def create_app() -> FastAPI:
setup_rpc_api_routes(app)

if settings.AGENT_TRACING:
setup_tracing(app, settings.AGENT_TRACING, APP_NAME)
initialize_tracing(app, settings.AGENT_TRACING, APP_NAME)

async def _on_startup() -> None:
print(APP_STARTED_BANNER_MSG, flush=True) # noqa: T201
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from models_library.basic_types import BootModeEnum
from packaging.version import Version
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from servicelib.logging_utils import config_all_loggers

from .. import exceptions
Expand Down Expand Up @@ -84,7 +84,7 @@ def init_app(settings: ApplicationSettings | None = None) -> FastAPI:
setup_rabbitmq(app)

if settings.API_SERVER_TRACING:
setup_tracing(app, settings.API_SERVER_TRACING, APP_NAME)
initialize_tracing(app, settings.API_SERVER_TRACING, APP_NAME)

if settings.API_SERVER_WEBSERVER:
webserver.setup(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging

from fastapi import FastAPI
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -71,7 +71,7 @@ def create_app(settings: ApplicationSettings) -> FastAPI:
setup_auto_scaler_background_task(app)
setup_buffer_machines_pool_task(app)
if app.state.settings.AUTOSCALING_TRACING:
setup_tracing(app, app.state.settings.AUTOSCALING_TRACING, APP_NAME)
initialize_tracing(app, app.state.settings.AUTOSCALING_TRACING, APP_NAME)

# ERROR HANDLERS

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from starlette.middleware.base import BaseHTTPMiddleware

from .._meta import API_VERSION, API_VTAG, APP_NAME, PROJECT_NAME, SUMMARY
Expand Down Expand Up @@ -47,7 +47,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
app.state.settings = settings

if settings.CATALOG_TRACING:
setup_tracing(app, settings.CATALOG_TRACING, APP_NAME)
initialize_tracing(app, settings.CATALOG_TRACING, APP_NAME)

# STARTUP-EVENT
app.add_event_handler("startup", create_on_startup(app))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -45,7 +45,7 @@ def create_app(settings: ApplicationSettings) -> FastAPI:
if app.state.settings.CLUSTERS_KEEPER_PROMETHEUS_INSTRUMENTATION_ENABLED:
setup_prometheus_instrumentation(app)
if app.state.settings.CLUSTERS_KEEPER_TRACING:
setup_tracing(
initialize_tracing(
app,
app.state.settings.CLUSTERS_KEEPER_TRACING,
APP_NAME,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from servicelib.logging_utils import config_all_loggers

from .._meta import API_VERSION, API_VTAG, APP_NAME
Expand Down Expand Up @@ -70,7 +70,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
if app.state.settings.DATCORE_ADAPTER_PROMETHEUS_INSTRUMENTATION_ENABLED:
setup_prometheus_instrumentation(app)
if app.state.settings.DATCORE_ADAPTER_TRACING:
setup_tracing(
initialize_tracing(
app,
app.state.settings.DATCORE_ADAPTER_TRACING,
APP_NAME,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
override_fastapi_openapi_method,
)
from servicelib.fastapi.profiler import initialize_profiler
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from servicelib.logging_utils import config_all_loggers

from .._meta import API_VERSION, API_VTAG, APP_NAME, PROJECT_NAME, SUMMARY
Expand Down Expand Up @@ -145,7 +145,7 @@ def init_app(settings: AppSettings | None = None) -> FastAPI:
substitutions.setup(app)

if settings.DIRECTOR_V2_TRACING:
setup_tracing(app, settings.DIRECTOR_V2_TRACING, APP_NAME)
initialize_tracing(app, settings.DIRECTOR_V2_TRACING, APP_NAME)

if settings.DIRECTOR_V0.DIRECTOR_ENABLED:
director_v0.setup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from fastapi import FastAPI
from servicelib.async_utils import cancel_sequential_workers
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -51,7 +51,7 @@ def create_app(settings: ApplicationSettings) -> FastAPI:
setup_api_routes(app)

if app.state.settings.DIRECTOR_TRACING:
setup_tracing(app, app.state.settings.DIRECTOR_TRACING, APP_NAME)
initialize_tracing(app, app.state.settings.DIRECTOR_TRACING, APP_NAME)

# replace by httpx client
setup_client_session(app)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
initialize_prometheus_instrumentation,
lifespan_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import get_lifespan_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -59,11 +59,6 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
if app_settings.DYNAMIC_SCHEDULER_PROMETHEUS_INSTRUMENTATION_ENABLED:
lifespans.append(lifespan_prometheus_instrumentation)

if app_settings.DYNAMIC_SCHEDULER_TRACING:
lifespans.append(
get_lifespan_tracing(app_settings.DYNAMIC_SCHEDULER_TRACING, APP_NAME)
)

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

initialize_frontend(app)

if app_settings.DYNAMIC_SCHEDULER_TRACING:
initialize_tracing(app, app_settings.DYNAMIC_SCHEDULER_TRACING, APP_NAME)

if app_settings.DYNAMIC_SCHEDULER_PROFILING:
initialize_profiler(app)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
get_common_oas_options,
override_fastapi_openapi_method,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing
from servicelib.logging_utils import config_all_loggers
from simcore_sdk.node_ports_common.exceptions import NodeNotFound

Expand Down Expand Up @@ -193,7 +193,9 @@ def create_app():
setup_prometheus_metrics(app)

if application_settings.DYNAMIC_SIDECAR_TRACING:
setup_tracing(app, application_settings.DYNAMIC_SIDECAR_TRACING, PROJECT_NAME)
initialize_tracing(
app, application_settings.DYNAMIC_SIDECAR_TRACING, PROJECT_NAME
)

# ERROR HANDLERS ------------
app.add_exception_handler(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging

from fastapi import FastAPI
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -43,7 +43,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
app.state.settings = app_settings
assert app.state.settings.API_VERSION == API_VERSION # nosec
if app.state.settings.EFS_GUARDIAN_TRACING:
setup_tracing(app, app.state.settings.EFS_GUARDIAN_TRACING, APP_NAME)
initialize_tracing(app, app.state.settings.EFS_GUARDIAN_TRACING, APP_NAME)

# PLUGINS SETUP
setup_rabbitmq(app)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -41,7 +41,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
if app.state.settings.INVITATIONS_PROMETHEUS_INSTRUMENTATION_ENABLED:
setup_prometheus_instrumentation(app)
if app.state.settings.INVITATIONS_TRACING:
setup_tracing(app, app.state.settings.INVITATIONS_TRACING, APP_NAME)
initialize_tracing(app, app.state.settings.INVITATIONS_TRACING, APP_NAME)

# ERROR HANDLERS
exceptions_handlers.setup(app)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from servicelib.fastapi.prometheus_instrumentation import (
setup_prometheus_instrumentation,
)
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -71,7 +71,7 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
if app.state.settings.PAYMENTS_PROMETHEUS_INSTRUMENTATION_ENABLED:
setup_prometheus_instrumentation(app)
if app.state.settings.PAYMENTS_TRACING:
setup_tracing(app, app.state.settings.PAYMENTS_TRACING, APP_NAME)
initialize_tracing(app, app.state.settings.PAYMENTS_TRACING, APP_NAME)

# ERROR HANDLERS
# ... add here ...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from fastapi import FastAPI
from servicelib.fastapi.openapi import override_fastapi_openapi_method
from servicelib.fastapi.tracing import setup_tracing
from servicelib.fastapi.tracing import initialize_tracing

from .._meta import (
API_VERSION,
Expand Down Expand Up @@ -67,7 +67,7 @@ def create_app(settings: ApplicationSettings) -> FastAPI:
setup_process_message_running_service(app) # Requires Rabbit

if app.state.settings.RESOURCE_USAGE_TRACKER_TRACING:
setup_tracing(
initialize_tracing(
app,
app.state.settings.RESOURCE_USAGE_TRACKER_TRACING,
app.state.settings.APP_NAME,
Expand Down
Loading