iii-observability 0.19.2.dev1__tar.gz → 0.19.3.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/PKG-INFO +1 -1
  2. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/pyproject.toml +1 -1
  3. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/telemetry.py +15 -1
  4. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/telemetry_types.py +7 -0
  5. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/.gitignore +0 -0
  6. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/README.md +0 -0
  7. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/__init__.py +0 -0
  8. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/baggage_span_processor.py +0 -0
  9. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/http_instrumentation.py +0 -0
  10. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/logger.py +0 -0
  11. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/payload.py +0 -0
  12. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/py.typed +0 -0
  13. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/reconnection.py +0 -0
  14. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/span_ops.py +0 -0
  15. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/src/iii_observability/telemetry_exporters.py +0 -0
  16. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/tests/__init__.py +0 -0
  17. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/tests/test_http_instrumentation.py +0 -0
  18. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/tests/test_telemetry.py +0 -0
  19. {iii_observability-0.19.2.dev1 → iii_observability-0.19.3.dev1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iii-observability
3
- Version: 0.19.2.dev1
3
+ Version: 0.19.3.dev1
4
4
  Summary: OpenTelemetry and logging primitives shared across iii SDKs.
5
5
  Project-URL: Homepage, https://github.com/iii-hq/iii
6
6
  Project-URL: Repository, https://github.com/iii-hq/iii
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "iii-observability"
7
- version = "0.19.2.dev1"
7
+ version = "0.19.3.dev1"
8
8
  description = "OpenTelemetry and logging primitives shared across iii SDKs."
9
9
  authors = [{ name = "III" }]
10
10
  license = { text = "Apache-2.0" }
@@ -115,7 +115,21 @@ def init_otel(
115
115
  from .baggage_span_processor import BaggageSpanProcessor
116
116
 
117
117
  provider.add_span_processor(BaggageSpanProcessor())
118
- provider.add_span_processor(BatchSpanProcessor(span_exporter)) # type: ignore[arg-type]
118
+ # Without an explicit schedule_delay_millis, BatchSpanProcessor inherits the
119
+ # OpenTelemetry default of 5000ms, so an ended span sits in the buffer up to
120
+ # 5s before reaching the engine — the dominant reason traces appear seconds
121
+ # late. Mirror the logs path with a small flush delay.
122
+ spans_flush_interval_ms = _resolve_int(
123
+ cfg.spans_flush_interval_ms,
124
+ "OTEL_SPANS_FLUSH_INTERVAL_MS",
125
+ default=100,
126
+ )
127
+ provider.add_span_processor(
128
+ BatchSpanProcessor(
129
+ span_exporter, # type: ignore[arg-type]
130
+ schedule_delay_millis=spans_flush_interval_ms,
131
+ )
132
+ )
119
133
  trace.set_tracer_provider(provider)
120
134
  _tracer = trace.get_tracer("iii-python-sdk")
121
135
 
@@ -30,6 +30,13 @@ class OtelConfig:
30
30
  fetch_instrumentation_enabled: bool = True
31
31
  """Auto-instrument urllib HTTP calls via URLLibInstrumentor. Defaults to True."""
32
32
 
33
+ spans_flush_interval_ms: int | None = None
34
+ """Span processor flush delay in milliseconds. Defaults to 100ms when not set.
35
+
36
+ The OpenTelemetry default of 5000ms is what makes traces appear seconds
37
+ after the action. Env override: OTEL_SPANS_FLUSH_INTERVAL_MS.
38
+ """
39
+
33
40
  logs_enabled: bool | None = None
34
41
  """Enable OTel log export via EngineLogExporter. Defaults to True when OTel is enabled."""
35
42