/usr/lib/python2.7/dist-packages/aws_xray_sdk/ext/django/conf.py is in python-aws-xray-sdk 0.95-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | import os
from django.conf import settings as django_settings
from django.test.signals import setting_changed
DEFAULTS = {
'AWS_XRAY_DAEMON_ADDRESS': '127.0.0.1:2000',
'AUTO_INSTRUMENT': True,
'AWS_XRAY_CONTEXT_MISSING': 'RUNTIME_ERROR',
'PLUGINS': (),
'SAMPLING': True,
'SAMPLING_RULES': None,
'AWS_XRAY_TRACING_NAME': None,
'DYNAMIC_NAMING': None,
}
XRAY_NAMESPACE = 'XRAY_RECORDER'
SUPPORTED_ENV_VARS = ('AWS_XRAY_DAEMON_ADDRESS',
'AWS_XRAY_CONTEXT_MISSING',
'AWS_XRAY_TRACING_NAME',
)
class XRaySettings(object):
"""
A object of Django settings to easily modify certain fields.
The precedence for configurations at different places is as follows:
environment variables > user settings in settings.py > default settings
"""
def __init__(self, user_settings=None):
self.defaults = DEFAULTS
if user_settings:
self._user_settings = user_settings
@property
def user_settings(self):
if not hasattr(self, '_user_settings'):
self._user_settings = getattr(django_settings, XRAY_NAMESPACE, {})
return self._user_settings
def __getattr__(self, attr):
if attr not in self.defaults:
raise AttributeError('Invalid setting: %s' % attr)
if self.user_settings.get(attr, None) is not None:
if attr in SUPPORTED_ENV_VARS:
return os.getenv(attr, self.user_settings[attr])
else:
return self.user_settings[attr]
elif attr in SUPPORTED_ENV_VARS:
return os.getenv(attr, self.defaults[attr])
else:
return self.defaults[attr]
settings = XRaySettings()
def reload_settings(*args, **kwargs):
"""
Reload X-Ray user settings upon Django server hot restart
"""
global settings
setting, value = kwargs['setting'], kwargs['value']
if setting == XRAY_NAMESPACE:
settings = XRaySettings(value)
setting_changed.connect(reload_settings)
|