Преглед на файлове

Fixed a bug with spawned worker processes not using the django settings.py even though celery was launched through manage.py.

unknown преди 16 години
родител
ревизия
0c4242409a
променени са 1 файла, в които са добавени 12 реда и са изтрити 0 реда
  1. 12 0
      celery/loaders/__init__.py

+ 12 - 0
celery/loaders/__init__.py

@@ -1,6 +1,7 @@
 from celery.loaders.djangoapp import Loader as DjangoLoader
 from celery.loaders.djangoapp import Loader as DjangoLoader
 from celery.loaders.default import Loader as DefaultLoader
 from celery.loaders.default import Loader as DefaultLoader
 from django.conf import settings
 from django.conf import settings
+from django.core.management import setup_environ
 
 
 """
 """
 .. class:: Loader
 .. class:: Loader
@@ -11,6 +12,17 @@ The current loader class.
 Loader = DefaultLoader
 Loader = DefaultLoader
 if settings.configured:
 if settings.configured:
     Loader = DjangoLoader
     Loader = DjangoLoader
+else:
+    # We might still be running celery with django, because worker processes
+    # spawned with celery running through manage.py, will not have had their
+    # django environment set up
+    try:
+        # If we can import 'settings', assume we're running celery with django
+        import settings as project_settings
+        setup_environ(project_settings)
+        Loader = DjangoLoader
+    except ImportError:
+        pass
 
 
 """
 """
 .. data:: current_loader
 .. data:: current_loader