def run_feed_sync(system_user): all_ready = anchore_engine.clients.services.common.check_services_ready(['simplequeue']) if not all_ready: logger.info("simplequeue service not yet ready, will retry") raise Exception('Simplequeue service not yet ready') else: try: # This has its own retry on the queue fetch, so wrap with catch block to ensure we don't double-retry on task exec simplequeue.run_target_with_queue_ttl(None, queue=feed_sync_queuename, target=do_feed_sync, max_wait_seconds=30, visibility_timeout=180, retries=FEED_SYNC_RETRIES, backoff_time=FEED_SYNC_RETRY_BACKOFF) except Exception as err: logger.warn("failed to process task this cycle: " + str(err))
def handle_feed_sync(*args, **kwargs): """ Initiates a feed sync in the system in response to a message from the queue :param args: :param kwargs: :return: """ system_user = _system_creds() logger.info('init args: {}'.format(kwargs)) cycle_time = kwargs['mythread']['cycle_timer'] while True: config = localconfig.get_config() feed_sync_enabled = config.get('feeds', {}).get('sync_enabled', True) if feed_sync_enabled: try: all_ready = anchore_engine.clients.services.common.check_services_ready( ['simplequeue']) if not all_ready: logger.info( "simplequeue service not yet ready, will retry") else: try: simplequeue.run_target_with_queue_ttl( system_user, queue=feed_sync_queuename, target=do_feed_sync, max_wait_seconds=30, visibility_timeout=180) except Exception as err: logger.warn("failed to process task this cycle: " + str(err)) except Exception as e: logger.error( 'Caught escaped error in feed sync handler: {}'.format(e)) else: logger.debug( "sync_enabled is set to false in config - skipping feed sync") time.sleep(cycle_time) return True