Files
@ 72778dda34cf
Branch filter:
Location: kallithea/pylons_app/lib/celerylib/__init__.py - annotation
72778dda34cf
1.5 KiB
text/x-python
some fixups in cache, added fallback and cache invalidation when key not found in cached repos list,
added extra test, some other small fixes
added extra test, some other small fixes
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)
|