Browse Source

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

unknown 15 years ago
parent
commit
0c4242409a
1 changed files with 12 additions and 0 deletions
  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.default import Loader as DefaultLoader
 from django.conf import settings
+from django.core.management import setup_environ
 
 """
 .. class:: Loader
@@ -11,6 +12,17 @@ The current loader class.
 Loader = DefaultLoader
 if settings.configured:
     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