Skip to content

Commit a47c45e

Browse files
authored
Adding try catch to fix ImproperlyConfigured exception while allowing (#1369)
1 parent 0adb306 commit a47c45e

File tree

2 files changed

+20
-1
lines changed
  • instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django

2 files changed

+20
-1
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- `opentelemetry-instrumentation-django` Fixed bug where auto-instrumentation fails when django is installed and settings are not configured.
13+
([#1369](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1369))
1214
- `opentelemetry-instrumentation-system-metrics` add supports to collect system thread count. ([#1339](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1339))
1315

1416
## [1.13.0-0.34b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.13.0-0.34b0) - 2022-09-26

instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/__init__.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def response_hook(span, request, response):
195195

196196
from django import VERSION as django_version
197197
from django.conf import settings
198+
from django.core.exceptions import ImproperlyConfigured
198199

199200
from opentelemetry.instrumentation.django.environment_variables import (
200201
OTEL_PYTHON_DJANGO_INSTRUMENT,
@@ -275,7 +276,23 @@ def _instrument(self, **kwargs):
275276
# https://docs.djangoproject.com/en/3.0/ref/middleware/#middleware-ordering
276277

277278
_middleware_setting = _get_django_middleware_setting()
278-
settings_middleware = getattr(settings, _middleware_setting, [])
279+
settings_middleware = []
280+
try:
281+
settings_middleware = getattr(settings, _middleware_setting, [])
282+
except ImproperlyConfigured as exception:
283+
_logger.debug(
284+
"DJANGO_SETTINGS_MODULE environment variable not configured. Defaulting to empty settings: %s",
285+
exception,
286+
)
287+
settings.configure()
288+
settings_middleware = getattr(settings, _middleware_setting, [])
289+
except ModuleNotFoundError as exception:
290+
_logger.debug(
291+
"DJANGO_SETTINGS_MODULE points to a non-existent module. Defaulting to empty settings: %s",
292+
exception,
293+
)
294+
settings.configure()
295+
settings_middleware = getattr(settings, _middleware_setting, [])
279296

280297
# Django allows to specify middlewares as a tuple, so we convert this tuple to a
281298
# list, otherwise we wouldn't be able to call append/remove

0 commit comments

Comments
 (0)