Celery 与 Django 集成:任务不断重试/连接失败的三板斧
现象
任务无限重试、ConnectionError或任务卡在 PENDING。
常见原因
Broker/Backend URL 配错;
与 Django 设置未加载(未调用 django.setup());
任务导入路径循环引用。
标准结构
proj/
proj/__init__.py
proj/celery.py
proj/celery.py:
import os
from celery import Celery
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj.settings")
app = Celery("proj")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
__init__.py:
from .celery import app as celery_app
__all__ = ("celery_app",)
检查
CELERY_BROKER_URL、CELERY_RESULT_BACKEND正确
Worker与Scheduler进程权限/网络
任务是否可幂等、是否设置了合理重试
上述骨架在 gplpal 的多个服务里共用,稳定性经长期验证。
评论 0