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正确

WorkerScheduler进程权限/网络

任务是否可幂等、是否设置了合理重试

上述骨架在 gplpal 的多个服务里共用,稳定性经长期验证。

评论 0