diff --git a/awx/conf/settings.py b/awx/conf/settings.py index 98a39978d3..d2733ce879 100644 --- a/awx/conf/settings.py +++ b/awx/conf/settings.py @@ -17,6 +17,8 @@ from django.utils.functional import cached_property # Django REST Framework from rest_framework.fields import empty, SkipField +import cachetools + # Tower from awx.main.utils import encrypt_field, decrypt_field from awx.conf import settings_registry @@ -28,6 +30,8 @@ from awx.conf.migrations._reencrypt import decrypt_field as old_decrypt_field logger = logging.getLogger('awx.conf.settings') +SETTING_MEMORY_TTL = 5 if 'callback_receiver' in ' '.join(sys.argv) else 0 + # Store a special value to indicate when a setting is not set in the database. SETTING_CACHE_NOTSET = '___notset___' @@ -406,6 +410,7 @@ class SettingsWrapper(UserSettingsHolder): def SETTINGS_MODULE(self): return self._get_default('SETTINGS_MODULE') + @cachetools.cached(cache=cachetools.TTLCache(maxsize=2048, ttl=SETTING_MEMORY_TTL)) def __getattr__(self, name): value = empty if name in self.all_supported_settings: diff --git a/awx/main/models/events.py b/awx/main/models/events.py index 40644ee31e..09ccb07125 100644 --- a/awx/main/models/events.py +++ b/awx/main/models/events.py @@ -380,10 +380,11 @@ class BasePlaybookEvent(CreatedModifiedModel): value = force_text(event_data.get(field, '')).strip() if value != getattr(self, field): setattr(self, field, value) - analytics_logger.info( - 'Event data saved.', - extra=dict(python_objects=dict(job_event=self)) - ) + if settings.LOG_AGGREGATOR_ENABLED: + analytics_logger.info( + 'Event data saved.', + extra=dict(python_objects=dict(job_event=self)) + ) @classmethod def create_from_data(cls, **kwargs):