Changeset - 14559eb34003
[Not reviewed]
default
0 1 0
Marcin Kuzminski - 15 years ago 2010-10-07 19:24:03
marcin@python-works.com
more error catching on celery run_task
1 file changed with 11 insertions and 7 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/celerylib/__init__.py
Show inline comments
 
from rhodecode.lib.pidlock import DaemonLock, LockHeld
 
from vcs.utils.lazy import LazyProperty
 
from decorator import decorator
 
import logging
 
import os
 
import sys
 
import traceback
 
from hashlib import md5
 
import socket
 
log = logging.getLogger(__name__)
 

	
 
class ResultWrapper(object):
 
    def __init__(self, task):
 
        self.task = task
 
        
 
    @LazyProperty
 
    def result(self):
 
        return self.task
 

	
 
def run_task(task, *args, **kwargs):
 
    try:
 
        t = task.delay(*args, **kwargs)
 
        log.info('running task %s', t.task_id)
 
        return t
 
    except socket.error, e:
 
        if  e.errno == 111:
 
            log.debug('Unable to connect to celeryd. Sync execution')
 
        else:
 
            log.error(traceback.format_exc())    
 
    except KeyError, e:
 
            log.debug('Unable to connect to celeryd. Sync execution')
 
    except Exception, e:
 
        print e
 
        if e.errno == 111:
 
            log.debug('Unnable to connect. Sync execution')
 
        else:
 
            log.error(traceback.format_exc())
 
        #pure sync version
 
        return ResultWrapper(task(*args, **kwargs))
 
        log.error(traceback.format_exc())
 
    
 
    return ResultWrapper(task(*args, **kwargs))
 

	
 

	
 
def locked_task(func):
 
    def __wrapper(func, *fargs, **fkwargs):
 
        params = list(fargs)
 
        params.extend(['%s-%s' % ar for ar in fkwargs.items()])
 
            
 
        lockkey = 'task_%s' % \
 
            md5(str(func.__name__) + '-' + \
 
                '-'.join(map(str, params))).hexdigest()
 
        log.info('running task with lockkey %s', lockkey)
 
        try:
0 comments (0 inline, 0 general)