瀏覽代碼

decorators.task, + task.base.Task should use the current app if it exists.

Ask Solem 14 年之前
父節點
當前提交
873adacdb7
共有 2 個文件被更改,包括 7 次插入5 次删除
  1. 3 2
      celery/decorators.py
  2. 4 3
      celery/task/base.py

+ 3 - 2
celery/decorators.py

@@ -5,11 +5,12 @@ Decorators
 """
 from inspect import getargspec
 
-from celery.app import default_app
+from celery.app import app_or_default
 from celery.task.base import PeriodicTask
 
 
-task = default_app.task
+def task(*args, **kwargs):
+    return app_or_default().task(*args, **kwargs)
 
 
 def periodic_task(**options):

+ 4 - 3
celery/task/base.py

@@ -1,7 +1,7 @@
 import sys
 import warnings
 
-from celery.app import default_app
+from celery.app import app_or_default
 from celery.datastructures import ExceptionInfo
 from celery.exceptions import MaxRetriesExceededError, RetryTaskError
 from celery.execute.trace import TaskTrace
@@ -704,7 +704,7 @@ def create_task_cls(app):
     return Task
 
 
-Task = create_task_cls(default_app)
+Task = create_task_cls(app_or_default())
 
 
 class PeriodicTask(Task):
@@ -770,6 +770,7 @@ class PeriodicTask(Task):
     relative = False
 
     def __init__(self):
+        app = app_or_default()
         if not hasattr(self, "run_every"):
             raise NotImplementedError(
                     "Periodic tasks must have a run_every attribute")
@@ -780,7 +781,7 @@ class PeriodicTask(Task):
 
         # For backward compatibility, add the periodic task to the
         # configuration schedule instead.
-        default_app.conf.CELERYBEAT_SCHEDULE[self.name] = {
+        app.conf.CELERYBEAT_SCHEDULE[self.name] = {
                 "task": self.name,
                 "schedule": self.run_every,
                 "args": (),