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")], |