Files
@ 9bedaa073c23
Branch filter:
Location: kallithea/pylons_app/lib/celerylib/__init__.py - annotation
9bedaa073c23
1.5 KiB
text/x-python
fixed lockdecrator to return executed function data
removed print
removed print
fb0c3af6031b 3fc3ce53659b fb0c3af6031b 3fc3ce53659b a3d9d24acbec a3d9d24acbec a3d9d24acbec fb0c3af6031b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b 3fc3ce53659b b12ea84fb906 3fc3ce53659b b12ea84fb906 b12ea84fb906 3fc3ce53659b b12ea84fb906 fb0c3af6031b b12ea84fb906 b12ea84fb906 b12ea84fb906 b12ea84fb906 3fc3ce53659b b12ea84fb906 fb0c3af6031b fb0c3af6031b ac32a026c306 ac32a026c306 ac32a026c306 ac32a026c306 ac32a026c306 fb0c3af6031b ac32a026c306 ac32a026c306 fb0c3af6031b fb0c3af6031b fb0c3af6031b 9bedaa073c23 fb0c3af6031b 9bedaa073c23 fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b ac32a026c306 fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b | from pylons_app.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
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 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))
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:
l = DaemonLock(lockkey)
ret = func(*fargs, **fkwargs)
l.release()
return ret
except LockHeld:
log.info('LockHeld')
return 'Task with key %s already running' % lockkey
return decorator(__wrapper, func)
|