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)
+
+
 
-        
-        
-    
-    
-    
-  
+
+
+
+
+