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.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