Example #1
0
def get_ironmq_queue_count(active_queues):
    if not IronMQ:
        return print("iron_mq not loaded, not getting queue count")
    assert(settings.IRON_MQ_PROJECT_ID)
    assert(settings.IRON_MQ_TOKEN)
    assert(settings.IRON_MQ_HOST)

    lock = redis.StrictRedis(
        host=settings.proc_scalar_lock_url.hostname,
        port=int(settings.proc_scalar_lock_url.port),
        db=int(settings.proc_scalar_lock_url.path[1:]),
        password=settings.proc_scalar_lock_url.password
    )

    queue = IronMQ(
        host=settings.IRON_MQ_HOST,
        project_id=settings.IRON_MQ_PROJECT_ID,
        token=settings.IRON_MQ_TOKEN
    )
    if not active_queues:
        active_queues = {}

    data = {}

    for queuename, procname in PROC_MAP.iteritems():
        details = {}
        try:
            details = queue.getQueueDetails(queuename)
            print(repr(details))
            length = details["size"]
        except (HTTPException, requests.exceptions.HTTPError):
            length = 0

        if not procname in data:
            key = "DISABLE_CELERY_%s" % procname
            lock_type = lock.get(key)
            if not lock_type == 0:
                lock_type = 0
            data[procname] = {'count': length, 'active': 0, 'deploy_lock': lock_type}
        else:
            data[procname]['count'] += length

        if procname in active_queues:
            data[procname]['active'] += active_queues[procname]

    return data