add a few additional optimizations to the callback receiver

This commit is contained in:
Ryan Petrello
2020-09-22 08:51:01 -04:00
parent b6afc085a7
commit b370e8389e
2 changed files with 10 additions and 4 deletions

View File

@@ -17,6 +17,8 @@ from django.utils.functional import cached_property
# Django REST Framework # Django REST Framework
from rest_framework.fields import empty, SkipField from rest_framework.fields import empty, SkipField
import cachetools
# Tower # Tower
from awx.main.utils import encrypt_field, decrypt_field from awx.main.utils import encrypt_field, decrypt_field
from awx.conf import settings_registry 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') 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. # Store a special value to indicate when a setting is not set in the database.
SETTING_CACHE_NOTSET = '___notset___' SETTING_CACHE_NOTSET = '___notset___'
@@ -406,6 +410,7 @@ class SettingsWrapper(UserSettingsHolder):
def SETTINGS_MODULE(self): def SETTINGS_MODULE(self):
return self._get_default('SETTINGS_MODULE') return self._get_default('SETTINGS_MODULE')
@cachetools.cached(cache=cachetools.TTLCache(maxsize=2048, ttl=SETTING_MEMORY_TTL))
def __getattr__(self, name): def __getattr__(self, name):
value = empty value = empty
if name in self.all_supported_settings: if name in self.all_supported_settings:

View File

@@ -380,10 +380,11 @@ class BasePlaybookEvent(CreatedModifiedModel):
value = force_text(event_data.get(field, '')).strip() value = force_text(event_data.get(field, '')).strip()
if value != getattr(self, field): if value != getattr(self, field):
setattr(self, field, value) setattr(self, field, value)
analytics_logger.info( if settings.LOG_AGGREGATOR_ENABLED:
'Event data saved.', analytics_logger.info(
extra=dict(python_objects=dict(job_event=self)) 'Event data saved.',
) extra=dict(python_objects=dict(job_event=self))
)
@classmethod @classmethod
def create_from_data(cls, **kwargs): def create_from_data(cls, **kwargs):