Example #1
0
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))
Example #2
0
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