-
Notifications
You must be signed in to change notification settings - Fork 806
Description
Notes
We are trying to use Opentelemetry to instrument grpc to get traces of functions. We observed this error on local once, and we couldn't reproduce it again, but it's always on production server. Furthermore, we are using GCP monitoring suite (stack drive) to check traces.
Environment:
Django==3.2.6
Python==3.7
grpcio-tools==1.32.0
grpcio==1.33.2
opentelemetry-api==1.4.1
opentelemetry-sdk==1.4.1
opentelemetry-instrumentation-grpc==0.23b2
Instrumentation code:
set_global_textmap(CloudTraceFormatPropagator())
# sampling sends a portion of generated spans based on a 1/X population size
sample_rate = int(os.getenv('SAMPLE_RATE', '1'))
sampler = TraceIdRatioBased(1 / sample_rate)
tracer_provider = TracerProvider(sampler=sampler)
cloud_trace_exporter = CloudTraceSpanExporter()
tracer_provider.add_span_processor(SimpleSpanProcessor(cloud_trace_exporter))
trace.set_tracer_provider(tracer_provider)
tracer = trace.get_tracer(name)
GrpcInstrumentorClient().instrument() # when commented error isn't reproduced
except (ValueError, NotImplementedError, DefaultCredentialsError) as exc:
print(exc) # Handle errors here
The error
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/google/api_core/bidi.py", line 637, in _thread_main
self._bidi_rpc.open()
File "/usr/local/lib/python3.7/site-packages/google/api_core/bidi.py", line 287, in open
call._wrapped.add_done_callback(self._on_call_done)
AttributeError: 'generator' object has no attribute 'add_done_callback'