__init__.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import os
  2. from celery.loaders.djangoapp import Loader as DjangoLoader
  3. from celery.loaders.default import Loader as DefaultLoader
  4. from django.conf import settings
  5. from django.core.management import setup_environ
  6. """
  7. .. class:: Loader
  8. The current loader class.
  9. """
  10. Loader = DefaultLoader
  11. if settings.configured:
  12. Loader = DjangoLoader
  13. else:
  14. if not callable(getattr(os, "fork", None)):
  15. # Platform doesn't support fork()
  16. # XXX On systems without fork, multiprocessing seems to be launching
  17. # the processes in some other way which does not copy the memory
  18. # of the parent process. This means that any configured env might
  19. # be lost. This is a hack to make it work on Windows.
  20. # A better way might be to use os.environ to set the currently
  21. # used configuration method so to propogate it to the "child"
  22. # processes. But this has to be experimented with.
  23. # [asksol/heyman]
  24. try:
  25. settings_mod = os.environ.get("DJANGO_SETTINGS_MODULE",
  26. "settings")
  27. project_settings = __import__(settings_mod, {}, {}, [''])
  28. setup_environ(project_settings)
  29. Loader = DjangoLoader
  30. except ImportError:
  31. pass
  32. """
  33. .. data:: current_loader
  34. The current loader instance.
  35. """
  36. current_loader = Loader()
  37. """
  38. .. data:: settings
  39. The global settings object.
  40. """
  41. settings = current_loader.conf