You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OS: Ubuntu in docker
Python version: 3.11
Package version: 0.49b2
What happened?
If the environment variable NO_PROXY is set HTTPXClientInstrumentor.instrument_client(client) will fail when wrapping the mounted transport with wrap_function_wrapper because the transport is None for that mount.
Error in wrapt/patches.py", line 46, in lookup_attribute
AttributeError: 'NoneType' object has no attribute 'handle_request'
Additional context
I had tests that failed only in CircleCI and I traced it to the presence of the environment variable NO_PROXY. HTTPX makes a mount for each entry in NO_PROXY, but with transport set to None. https://www.python-httpx.org/environment_variables/#no_proxy
CircleCI is where I found this, because CircleCI sets this env var in its base cimg images, probably to ensure curl works. They set it to 127.0.0.1,localhost,circleci-internal-outer-build-agent.
The easiest fix appears to be to skip a mount if transport is None.
There are two workarounds:
Use HTTPXClientInstrumentor().instrument() instead of instrument_client.
Set trust_env=False when creating the httpx.Client or httpx.AsyncClient. httpx won't use the env variables at all, which affects proxies and ssl key definitions.
Would you like to implement a fix?
None
The text was updated successfully, but these errors were encountered:
Describe your environment
OS: Ubuntu in docker
Python version: 3.11
Package version: 0.49b2
What happened?
If the environment variable
NO_PROXY
is setHTTPXClientInstrumentor.instrument_client(client)
will fail when wrapping the mounted transport withwrap_function_wrapper
because the transport isNone
for that mount.Steps to Reproduce
export NO_PROXY=http://example.com
Expected Result
No exception, client is instrumented.
Actual Result
Error in
wrapt/patches.py", line 46, in lookup_attribute
Additional context
I had tests that failed only in CircleCI and I traced it to the presence of the environment variable
NO_PROXY
. HTTPX makes a mount for each entry inNO_PROXY
, but with transport set toNone
.https://www.python-httpx.org/environment_variables/#no_proxy
CircleCI is where I found this, because CircleCI sets this env var in its base
cimg
images, probably to ensure curl works. They set it to127.0.0.1,localhost,circleci-internal-outer-build-agent
.The affected code is
opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py
Line 1008 in 54e684a
opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-httpx/src/opentelemetry/instrumentation/httpx/__init__.py
Line 1033 in 54e684a
The easiest fix appears to be to skip a mount if
transport
isNone
.There are two workarounds:
HTTPXClientInstrumentor().instrument()
instead ofinstrument_client
.trust_env=False
when creating thehttpx.Client
orhttpx.AsyncClient
.httpx
won't use the env variables at all, which affects proxies and ssl key definitions.Would you like to implement a fix?
None
The text was updated successfully, but these errors were encountered: