diff --git a/awx/main/management/commands/run_fact_cache_receiver.py b/awx/main/management/commands/run_fact_cache_receiver.py index ebabaee86b..aa3abe1bfd 100644 --- a/awx/main/management/commands/run_fact_cache_receiver.py +++ b/awx/main/management/commands/run_fact_cache_receiver.py @@ -3,6 +3,7 @@ # Python import logging +from threading import Thread from datetime import datetime # Django @@ -76,14 +77,18 @@ class FactCacheReceiver(object): (fact_obj, version_obj) = Fact.add_fact(self.timestamp, facts, host, module) logger.info('Created new fact <%s, %s>' % (fact_obj.id, version_obj.id)) - def run_receiver(self): + def run_receiver(self, use_processing_threads=True): with Socket('fact_cache', 'r') as facts: for message in facts.listen(): if 'host' not in message or 'facts' not in message or 'date_key' not in message: logger.warn('Received invalid message %s' % message) continue logger.info('Received message %s' % message) - self.process_fact_message(message) + if use_processing_threads: + wt = Thread(target=self.process_fact_message, args=(message,)) + wt.start() + else: + self.process_fact_message(message) class Command(NoArgsCommand): ''' diff --git a/awx/main/tests/commands/run_fact_cache_receiver.py b/awx/main/tests/commands/run_fact_cache_receiver.py index 0940c05e4e..c2622e057a 100644 --- a/awx/main/tests/commands/run_fact_cache_receiver.py +++ b/awx/main/tests/commands/run_fact_cache_receiver.py @@ -142,7 +142,7 @@ class RunFactCacheReceiverUnitTest(BaseTest, MongoDBRequired): receiver = FactCacheReceiver() receiver.process_fact_message = MagicMock(name='process_fact_message') - receiver.run_receiver() + receiver.run_receiver(use_processing_threads=False) receiver.process_fact_message.assert_called_once_with(TEST_MSG)