summaryrefslogtreecommitdiff
path: root/chimere/tasks.py
diff options
context:
space:
mode:
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
commit36ca107c16c520bdd05a4615a3bbd2ecd159324a (patch)
tree29c4d4fe422b3b40c9c1e08d8ee5afba5292dadb /chimere/tasks.py
parent1334b649b6a33fe6c347f36c39ba224dc89a8814 (diff)
downloadChimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.tar.bz2
Chimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.zip
Allow import without Celery
Diffstat (limited to 'chimere/tasks.py')
-rw-r--r--chimere/tasks.py40
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")],