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)
def enqueue_published(): """Pick new items from ``published`` collection and enqueue it.""" with ProfileManager('publish:enqueue'): EnqueueContent().run()
def enqueue_published(): with ProfileManager('publish:enqueue'): EnqueueContent().run()