mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-08 20:10:17 +02:00
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
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
|
|
|
|
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
|
|
|
|
# Set a hard task execution time of 5 minutes before celery will cold restart
|
|
app.conf.worker_soft_shutdown_timeout = 300
|
|
app.conf.worker_enable_soft_shutdown_on_idle = 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': {}
|
|
}
|
|
|
|
app.conf.task_routes = {
|
|
# Some AA Services are sensitive to threaded tasks
|
|
# Utilize a single threaded worker to process these tasks
|
|
# Discord: Multithreads can cause duplicate role creation.
|
|
"discord.*": {"queue": "services"},
|
|
}
|
|
|
|
# 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"
|