schon/evibes/settings/celery.py
2026-01-04 20:47:52 +03:00

109 lines
3 KiB
Python

from datetime import timedelta
from evibes.settings.base import REDIS_PASSWORD, TIME_ZONE
CELERY_ENABLE_UTC = False
CELERY_TIMEZONE = TIME_ZONE
CELERY_BROKER_URL = f"redis://:{REDIS_PASSWORD}@redis:6379/0"
CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True
CELERY_BROKER_HEARTBEAT = 10
CELERY_BROKER_HEARTBEAT_CHECKRATE = 2
CELERY_BROKER_POOL_LIMIT = 10
CELERY_BROKER_TRANSPORT_OPTIONS = {
"visibility_timeout": 3600,
"retry_policy": {
"interval_start": 0.1,
"interval_step": 0.2,
"max_retries": 5,
},
"socket_keepalive": True,
"socket_timeout": 30,
"socket_connect_timeout": 30,
"retry_on_timeout": True,
}
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
CELERY_RESULT_EXTENDED = True
CELERY_RESULT_EXPIRES = timedelta(days=1)
CELERY_RESULT_COMPRESSION = "zlib"
CELERY_TASK_SERIALIZER = "orjson"
CELERY_RESULT_SERIALIZER = "orjson"
CELERY_ACCEPT_CONTENT = ["orjson", "json"]
CELERY_EVENT_SERIALIZER = "orjson"
CELERY_TASK_ACKS_LATE = True
CELERY_TASK_REJECT_ON_WORKER_LOST = True
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_SEND_SENT_EVENT = True
CELERY_WORKER_SEND_TASK_EVENTS = True
CELERY_TASK_SOFT_TIME_LIMIT = 3600
CELERY_TASK_TIME_LIMIT = 3900
CELERY_TASK_ANNOTATIONS = {
"engine.core.tasks.update_products_task": {
"rate_limit": "1/m",
"time_limit": 7200,
"soft_time_limit": 6900,
"acks_late": True,
"reject_on_worker_lost": True,
},
}
CELERY_WORKER_HIJACK_ROOT_LOGGER = False
CELERY_WORKER_PREFETCH_MULTIPLIER = 4
CELERY_WORKER_MAX_TASKS_PER_CHILD = 1000
CELERY_WORKER_DISABLE_RATE_LIMITS = False
CELERY_TASK_ROUTES = {
"engine.core.tasks.update_products_task": {"queue": "stock_updater"},
}
CELERY_TASK_DEFAULT_QUEUE = "default"
CELERY_TASK_DEFAULT_EXCHANGE = "default"
CELERY_TASK_DEFAULT_ROUTING_KEY = "default"
CELERY_TASK_STORE_ERRORS_EVEN_IF_IGNORED = True
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler"
CELERY_BEAT_SCHEDULE = {
"backup_task": {
"task": "engine.core.tasks.backup_task",
"schedule": timedelta(days=7),
"options": {"queue": "default"},
},
"update_products_task": {
"task": "engine.core.tasks.update_products_task",
"schedule": timedelta(minutes=60),
"options": {"queue": "stock_updater"},
},
"update_orderproducts_task": {
"task": "engine.core.tasks.update_orderproducts_task",
"schedule": timedelta(minutes=1),
"options": {"queue": "default"},
},
"set_default_caches_task": {
"task": "engine.core.tasks.set_default_caches_task",
"schedule": timedelta(hours=4),
"options": {"queue": "default"},
},
"remove_stale_product_images": {
"task": "engine.core.tasks.remove_stale_product_images",
"schedule": timedelta(days=1),
"options": {"queue": "default"},
},
"process_promotions": {
"task": "engine.core.tasks.process_promotions",
"schedule": timedelta(hours=2),
"options": {"queue": "default"},
},
}