import os from celery import Celery from celery.app import trace # set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myauth.settings.local') from django.conf import settings # noqa app = Celery('myauth') # Automatically try to establish the connection to the AMQP broker on # Celery startup if it is unavailable. app.conf.broker_connection_retry_on_startup = True # Using a string here means the worker don't have to serialize # the configuration object to child processes. app.config_from_object('django.conf:settings') # setup priorities ( 0 Highest, 9 Lowest ) app.conf.broker_transport_options = { 'priority_steps': list(range(10)), # setup que to have 10 steps 'queue_order_strategy': 'priority', # setup que to use prio sorting } app.conf.task_default_priority = 5 # anything called with the task.delay() will be given normal priority (5) app.conf.worker_prefetch_multiplier = 1 # only prefetch single tasks at a time on the workers so that prio tasks happen app.conf.ONCE = { 'backend': 'allianceauth.services.tasks.DjangoBackend', 'settings': {} } # Load task modules from all registered Django app configs. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) # Remove result from default log message on task success trace.LOG_SUCCESS = "Task %(name)s[%(id)s] succeeded in %(runtime)ss"