diff --git a/logfire/_internal/config.py b/logfire/_internal/config.py index 8edb69e8d..8fa304337 100644 --- a/logfire/_internal/config.py +++ b/logfire/_internal/config.py @@ -92,6 +92,7 @@ SeededRandomIdGenerator, UnexpectedResponse, ensure_data_dir_exists, + handle_internal_errors, read_toml_file, suppress_instrumentation, ) @@ -907,6 +908,14 @@ def check_token(): else: meter_provider = NoOpMeterProvider() + def fix_pid(): # pragma: no cover + with handle_internal_errors(): + new_resource = resource.merge(Resource({ResourceAttributes.PROCESS_PID: os.getpid()})) + tracer_provider._resource = new_resource # type: ignore + meter_provider._resource = new_resource # type: ignore + + os.register_at_fork(after_in_child=fix_pid) + # we need to shut down any existing providers to avoid leaking resources (like threads) # but if this takes longer than 100ms you should call `logfire.shutdown` before reconfiguring self._meter_provider.shutdown(