default.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. """The default loader used when no custom app has been initialized."""
  3. from __future__ import absolute_import, unicode_literals
  4. import os
  5. import warnings
  6. from celery.exceptions import NotConfigured
  7. from celery.utils.collections import DictAttribute
  8. from celery.utils.serialization import strtobool
  9. from .base import BaseLoader
  10. __all__ = ('Loader', 'DEFAULT_CONFIG_MODULE')
  11. DEFAULT_CONFIG_MODULE = 'celeryconfig'
  12. #: Warns if configuration file is missing if :envvar:`C_WNOCONF` is set.
  13. C_WNOCONF = strtobool(os.environ.get('C_WNOCONF', False))
  14. class Loader(BaseLoader):
  15. """The loader used by the default app."""
  16. def setup_settings(self, settingsdict):
  17. return DictAttribute(settingsdict)
  18. def read_configuration(self, fail_silently=True):
  19. """Read configuration from :file:`celeryconfig.py`."""
  20. configname = os.environ.get('CELERY_CONFIG_MODULE',
  21. DEFAULT_CONFIG_MODULE)
  22. try:
  23. usercfg = self._import_config_module(configname)
  24. except ImportError:
  25. if not fail_silently:
  26. raise
  27. # billiard sets this if forked using execv
  28. if C_WNOCONF and not os.environ.get('FORKED_BY_MULTIPROCESSING'):
  29. warnings.warn(NotConfigured(
  30. 'No {module} module found! Please make sure it exists and '
  31. 'is available to Python.'.format(module=configname)))
  32. return self.setup_settings({})
  33. else:
  34. self.configured = True
  35. return self.setup_settings(usercfg)