__init__.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from celery import Celery
  4. from kombu import Exchange, Queue
  5. from maxkb import settings
  6. from .heartbeat import *
  7. from .hmac_signed_serializer import register_hmac_signed_serializer
  8. # set the default Django settings module for the 'celery' program.
  9. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maxkb.settings')
  10. register_hmac_signed_serializer()
  11. app = Celery('MaxKB')
  12. configs = {k: v for k, v in settings.__dict__.items() if k.startswith('CELERY')}
  13. configs['worker_concurrency'] = 5
  14. # Using a string here means the worker will not have to
  15. # pickle the object when using Windows.
  16. # app.config_from_object('django.conf:settings', namespace='CELERY')
  17. configs["task_queues"] = [
  18. Queue("celery", Exchange("celery"), routing_key="celery"),
  19. Queue("model", Exchange("model"), routing_key="model")
  20. ]
  21. app.namespace = 'CELERY'
  22. app.conf.update(
  23. {key.replace('CELERY_', '') if key.replace('CELERY_', '').lower() == key.replace('CELERY_',
  24. '') else key: configs.get(
  25. key) for
  26. key
  27. in configs.keys()})
  28. app.autodiscover_tasks(lambda: [app_config.split('.')[0] for app_config in settings.INSTALLED_APPS])