diff --git a/rhodecode/lib/celerylib/__init__.py b/rhodecode/lib/celerylib/__init__.py --- a/rhodecode/lib/celerylib/__init__.py +++ b/rhodecode/lib/celerylib/__init__.py @@ -1,14 +1,54 @@ -from rhodecode.lib.pidlock import DaemonLock, LockHeld -from vcs.utils.lazy import LazyProperty -from decorator import decorator -import logging +# -*- coding: utf-8 -*- +""" + package.rhodecode.lib.celerylib.__init__ + ~~~~~~~~~~~~~~ + + celery libs for RhodeCode + + :created_on: Nov 27, 2010 + :author: marcink + :copyright: (C) 2009-2010 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; version 2 +# of the License or (at your opinion) any later version of the license. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. + import os import sys +import socket import traceback +import logging + from hashlib import md5 -import socket +from decorator import decorator +from vcs.utils.lazy import LazyProperty + +from rhodecode.lib.pidlock import DaemonLock, LockHeld + +from pylons import config + log = logging.getLogger(__name__) +def str2bool(v): + return v.lower() in ["yes", "true", "t", "1"] if v else None + +try: + CELERY_ON = str2bool(config['app_conf'].get('use_celery')) +except KeyError: + CELERY_ON = False + class ResultWrapper(object): def __init__(self, task): self.task = task @@ -18,27 +58,22 @@ class ResultWrapper(object): 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 CELERY_ON: try: - conn_failed = e.errno == 111 - except AttributeError: - conn_failed = False + 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()) - if conn_failed: - log.debug('Unable to connect to celeryd. Sync execution') - else: - log.debug('Unable to connect to celeryd. Sync execution') - - 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))