celery_default.py 850 B

12345678910111213141516171819202122232425262728293031
  1. import os
  2. import subprocess
  3. from .celery_base import CeleryBaseService
  4. from django.conf import settings
  5. __all__ = ['CeleryDefaultService']
  6. class CeleryDefaultService(CeleryBaseService):
  7. def __init__(self, **kwargs):
  8. kwargs['queue'] = 'celery'
  9. super().__init__(**kwargs)
  10. def open_subprocess(self):
  11. env = os.environ.copy()
  12. env['LC_ALL'] = 'C.UTF-8'
  13. env['PYTHONOPTIMIZE'] = '1'
  14. env['ANSIBLE_FORCE_COLOR'] = 'True'
  15. env['PYTHONPATH'] = settings.APPS_DIR
  16. env['SERVER_NAME'] = 'celery'
  17. if os.getuid() == 0:
  18. env.setdefault('C_FORCE_ROOT', '1')
  19. kwargs = {
  20. 'cwd': self.cwd,
  21. 'stderr': self.log_file,
  22. 'stdout': self.log_file,
  23. 'env': env
  24. }
  25. self._process = subprocess.Popen(self.cmd, **kwargs)