Files
@ ca41d544dbdf
Branch filter:
Location: kallithea/pylons_app/lib/celerylib/__init__.py - annotation
ca41d544dbdf
1.6 KiB
text/x-python
Merge with 6aa7db1c083a1384ebff5c2bb3c943a035bb310d - celery branch
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 fb0c3af6031b fb0c3af6031b b12ea84fb906 fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b fb0c3af6031b 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))
class LockTask(object):
"""LockTask decorator"""
def __init__(self, func):
self.func = func
def __call__(self, func):
return decorator(self.__wrapper, func)
def __wrapper(self, func, *fargs, **fkwargs):
params = []
params.extend(fargs)
params.extend(fkwargs.values())
lockkey = 'task_%s' % \
md5(str(self.func) + '-' + '-'.join(map(str, params))).hexdigest()
log.info('running task with lockkey %s', lockkey)
try:
l = DaemonLock(lockkey)
return func(*fargs, **fkwargs)
l.release()
except LockHeld:
log.info('LockHeld')
return 'Task with key %s already running' % lockkey
|