Mercurial > kallithea
diff rhodecode/lib/celerylib/__init__.py @ 776:f6c613fba757 beta
Celery is configured by the .ini files and run from paster now
removed celeryconfig, added homebrew celery-pylons,
added paster celeryd command, fixed tasks to use pylons configs, sqlalchemy sessions
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 27 Nov 2010 01:27:24 +0100 |
parents | 14559eb34003 |
children | 71113f64b2d8 |
line wrap: on
line diff
--- a/rhodecode/lib/celerylib/__init__.py Fri Nov 26 23:49:19 2010 +0100 +++ b/rhodecode/lib/celerylib/__init__.py Sat Nov 27 01:27:24 2010 +0100 @@ -1,37 +1,47 @@ +import os +import sys +import socket +import traceback +import logging + 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 +from pylons import config + log = logging.getLogger(__name__) +def str2bool(v): + return v.lower() in ["yes", "true", "t", "1"] if v else None + +CELERY_ON = str2bool(config['app_conf'].get('use_celery')) + 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: - log.error(traceback.format_exc()) - + if CELERY_ON: + try: + t = task.delay(*args, **kwargs) + log.info('running task %s:%s', t.task_id, task) + 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: + log.error(traceback.format_exc()) + + log.debug('executing task %s in sync mode', task) return ResultWrapper(task(*args, **kwargs)) @@ -39,7 +49,7 @@ 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() @@ -51,14 +61,14 @@ return ret except LockHeld: log.info('LockHeld') - return 'Task with key %s already running' % lockkey + return 'Task with key %s already running' % lockkey - return decorator(__wrapper, func) - + return decorator(__wrapper, func) + + - - - - - - + + + + +