def publish():
    """Fetch items from publish queue as per the configuration, call the transmit function."""
    with ProfileManager('publish:transmit'):
        lock_name = get_lock_id("Transmit", "Articles")
        if not lock(lock_name, expire=1810):
            logger.info('Task: %s is already running.', lock_name)
            return

        try:
            for priority in [True, False]:  # top priority first
                for retries in [False, True]:  # first publish pending, retries after
                    subs = get_queue_subscribers(priority=priority, retries=retries)
                    for sub in subs:
                        sub_lock_name = get_lock_id('Subscriber', 'Transmit', sub)
                        if is_locked(sub_lock_name):
                            logger.info('Task: %s is already running.', sub_lock_name)
                            continue
                        transmit_subscriber_items.apply_async(
                            (str(sub), ),
                            {'retries': retries, 'priority': priority},
                            queue=_get_queue(priority),
                        )
        except Exception:
            logger.exception('Task: %s failed.', lock_name)
        finally:
            logger.debug('unlock %s', lock_name)
            unlock(lock_name)
def publish():
    """
    Fetches items from publish queue as per the configuration,
    calls the transmit function.
    """
    with ProfileManager('publish:transmit'):
        lock_name = get_lock_id("Transmit", "Articles")
        if not lock(lock_name, expire=1810):
            logger.info('Task: {} is already running.'.format(lock_name))
            return

        try:
            # Query any oustanding transmit requests
            items = list(get_queue_items())
            if len(items) > 0:
                transmit_items(items)

            # Query any outstanding retry attempts
            retry_items = list(get_queue_items(True))
            if len(retry_items) > 0:
                transmit_items(retry_items)

        except:
            logger.exception('Task: {} failed.'.format(lock_name))
        finally:
            unlock(lock_name)
def publish():
    """Fetch items from publish queue as per the configuration, call the transmit function."""
    with ProfileManager('publish:transmit'):
        lock_name = get_lock_id("Transmit", "Articles")
        if not lock(lock_name, expire=1810):
            logger.info('Task: {} is already running.'.format(lock_name))
            return

        try:
            for retries in [False, True]:  # first publish pending, retries after
                subs = get_queue_subscribers(retries=retries)
                for sub in subs:
                    transmit_subscriber_items.delay(str(sub), retries=retries)
        except Exception:
            logger.exception('Task: {} failed.'.format(lock_name))
        finally:
            unlock(lock_name)
Example #4
0
def enqueue_published():
    """Pick new items from ``published`` collection and enqueue it."""
    with ProfileManager('publish:enqueue'):
        EnqueueContent().run()
Example #5
0
def enqueue_published():
    with ProfileManager('publish:enqueue'):
        EnqueueContent().run()