Ejemplo n.º 1
0
def failure(job=None, exc=None):
    # depending on the failure we might requeue it with a
    # delay, using job.enqueue()
    # XXX
    pl = job.redis.pipeline()
    job.metadata['ended'] = time.time()
    save_job(job)
    dump = json.dumps({'msg': 'Error', 'data': str(exc)})
    console_key = 'retools:jobconsole:%s' % job.job_id
    current = job.redis.get(console_key)
    if current is not None:
        data = current + str(exc)
    else:
        data = str(exc)
    pl.set(console_key, data)
    pl.srem('retools:started', job.job_id)
    pl.delete('retools:jobpid:%s' % str(os.getpid()))
    pl.sadd('retools:queue:failures', job.job_id)
    pl.lpush('retools:result:%s' % job.job_id, dump)
    pl.sadd('retools:consoles', job.job_id)
    pl.expire('retools:result:%s', 3600)
    nodes = os.environ.get('MARTEAU_NODES')
    if nodes is not None:
        nodes = nodes.split(',')
        for name in nodes:
            data = job.redis.get('retools:node:%s' % name)
            node = Node(**json.loads(data))
            node.status = 'idle'
            names = job.redis.smembers('retools:nodes')
            if node.name not in names:
                job.redis.sadd('retools:nodes', node.name)
            job.redis.set('retools:node:%s' % node.name, node.to_json())

    pl.execute()
def success(job=None, result=None):
    pl = job.redis.pipeline()
    job.metadata['ended'] = time.time()
    save_job(job)
    result = json.dumps({'data': result, 'msg': 'Success'})
    pl.srem('retools:started', job.job_id)
    pl.delete('retools:jobpid:%s' % str(os.getpid()))
    pl.sadd('retools:queue:successes', job.job_id)
    pl.lpush('retools:result:%s' % job.job_id, result)
    pl.expire('retools:result:%s', 3600)
    pl.sadd('retools:consoles', job.job_id)
    nodes = os.environ.get('MARTEAU_NODES')
    if nodes is not None:
        nodes = nodes.split(',')
        for name in nodes:
            data = job.redis.get('retools:node:%s' % name)
            if data is None:
                continue
            node = Node(**json.loads(data))
            node.status = 'idle'
            names = job.redis.smembers('retools:nodes')
            if node.name not in names:
                job.redis.sadd('retools:nodes', node.name)
            job.redis.set('retools:node:%s' % node.name, node.to_json())

    pl.execute()
Ejemplo n.º 3
0
def success(job=None, result=None):
    pl = job.redis.pipeline()
    job.metadata['ended'] = time.time()
    save_job(job)
    result = json.dumps({'data': result, 'msg': 'Success'})
    pl.srem('retools:started', job.job_id)
    pl.delete('retools:jobpid:%s' % str(os.getpid()))
    pl.sadd('retools:queue:successes', job.job_id)
    pl.lpush('retools:result:%s' % job.job_id, result)
    pl.expire('retools:result:%s', 3600)
    pl.sadd('retools:consoles', job.job_id)
    nodes = os.environ.get('MARTEAU_NODES')
    if nodes is not None:
        nodes = nodes.split(',')
        for name in nodes:
            data = job.redis.get('retools:node:%s' % name)
            if data is None:
                continue
            node = Node(**json.loads(data))
            node.status = 'idle'
            names = job.redis.smembers('retools:nodes')
            if node.name not in names:
                job.redis.sadd('retools:nodes', node.name)
            job.redis.set('retools:node:%s' % node.name, node.to_json())

    pl.execute()
def failure(job=None, exc=None):
    # depending on the failure we might requeue it with a
    # delay, using job.enqueue()
    pl = job.redis.pipeline()
    job.metadata['ended'] = time.time()
    save_job(job)
    dump = json.dumps({'msg': 'Error', 'data': str(exc)})
    console_key = 'retools:jobconsole:%s' % job.job_id
    current = job.redis.get(console_key)
    if current is not None:
        data = current + str(exc) + '\n'

    else:
        data = str(exc) + '\n'
    pl.set(console_key, data)
    pl.srem('retools:started', job.job_id)
    pl.delete('retools:jobpid:%s' % str(os.getpid()))
    pl.sadd('retools:queue:failures', job.job_id)
    pl.lpush('retools:result:%s' % job.job_id, dump)
    pl.sadd('retools:consoles', job.job_id)
    pl.expire('retools:result:%s', 3600)
    nodes = os.environ.get('MARTEAU_NODES')
    if nodes is not None:
        nodes = nodes.split(',')
        for name in nodes:
            data = job.redis.get('retools:node:%s' % name)
            if data is None:
                continue
            node = Node(**json.loads(data))
            node.status = 'idle'
            names = job.redis.smembers('retools:nodes')
            if node.name not in names:
                job.redis.sadd('retools:nodes', node.name)
            job.redis.set('retools:node:%s' % node.name, node.to_json())

    if 'enough free nodes' in str(exc):
        job.enqueue()

    pl.execute()