diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-03 11:27:05 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-03 11:27:05 +0200 | 
| commit | 36ca107c16c520bdd05a4615a3bbd2ecd159324a (patch) | |
| tree | 29c4d4fe422b3b40c9c1e08d8ee5afba5292dadb /chimere/tasks.py | |
| parent | 1334b649b6a33fe6c347f36c39ba224dc89a8814 (diff) | |
| download | Chimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.tar.bz2 Chimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.zip  | |
Allow import without Celery
Diffstat (limited to 'chimere/tasks.py')
| -rw-r--r-- | chimere/tasks.py | 40 | 
1 files changed, 27 insertions, 13 deletions
diff --git a/chimere/tasks.py b/chimere/tasks.py index 1405c5b..1d55d2d 100644 --- a/chimere/tasks.py +++ b/chimere/tasks.py @@ -18,31 +18,45 @@  # See the file COPYING for details.  from django.conf import settings -if 'kombu.transport.django' not in settings.INSTALLED_APPS \ -   or 'djcelery' not in settings.INSTALLED_APPS: -    raise ImportError - -from celery.decorators import task +if 'kombu.transport.django' in settings.INSTALLED_APPS \ +   and 'djcelery' in settings.INSTALLED_APPS: +    from celery.decorators import task  from django.core.exceptions import ObjectDoesNotExist  from django.utils.translation import ugettext_lazy as _  from chimere.models import Importer +  def single_instance_task(timeout):      def task_exc(func):          def wrapper(*args, **kwargs): -            lock_id = "celery-single-instance-" + func.__name__ -            acquire_lock = lambda: cache.add(lock_id, "true", timeout) -            release_lock = lambda: cache.delete(lock_id) -            if acquire_lock(): -                try: -                    func() -                finally: -                    release_lock() +            return func()          return wrapper      return task_exc +if 'task' in globals(): +    def single_instance_task(timeout): +        def task_exc(func): +            def wrapper(*args, **kwargs): +                lock_id = "celery-single-instance-" + func.__name__ +                acquire_lock = lambda: cache.add(lock_id, "true", timeout) +                release_lock = lambda: cache.delete(lock_id) +                if acquire_lock(): +                    try: +                        func() +                    finally: +                        release_lock() +            return wrapper +        return task_exc +else: +    def task(): +        def task_exc(func): +            def wrapper(*args, **kwargs): +                func(*args, **kwargs) +            return wrapper +        return task_exc +  IMPORT_MESSAGES = {                     'import_pending':[_(u"Import pending")],                     'import_process':[_(u"Import processing")],  | 
