SuperAPI AI 工具集

django-celery

部署与运维

查看项目

更新于 10-15 20:13

技能介绍

用途:在 Django 项目中集成 Celery 分布式任务队列,并用 django-celery-beat 实现基于数据库的周期任务调度。

主要能力:覆盖 Celery 项目配置、任务定义与执行、定时调度、监控与最佳实践;提供任务调用、任务签名(chain/group/chord)、结果检查、systemd 部署、Flower 监控、批处理与健康检查等参考主题。

安装:pip install celery django-celery-beat redis。配置需创建 proj/celery.py,设置 DJANGO_SETTINGS_MODULE、config_from_object、autodiscover_tasks,并在 proj/init.py 暴露 celery_app;settings.py 中配置 CELERY_BROKER_URL、结果后端、序列化、时区、CELERY_BEAT_SCHEDULER 为 django_celery_beat.schedulers:DatabaseScheduler,以及软/硬超时、重试、路由、worker 预取与最大任务数等。迁移:python manage.py migrate django_celery_beat。

关键限制与反模式:不要把 QuerySet 或模型实例作为任务参数,应传 ID 并在 worker 中重新查询;不要在可能回滚的事务中直接 delay()/apply_async(),应使用 transaction.on_commit;CELERY_TASK_ALWAYS_EAGER 不等同真实执行,不检验序列化、路由、重试与 worker 行为,容易产生假阳性;长跑 worker 应在任务开始调用 close_old_connections() 或设置 CELERY_WORKER_MAX_TASKS_PER_CHILD;应使用 UTC 时区感知 datetime;settings 应在调用时读取而非模块导入时读取,以免 override_settings 失效。

测试:直接调用任务函数测试逻辑,mock apply_async 断言参数与路由,mock retry 确定性测试重试,并显式验证参数可序列化。

生态:Flower 提供实时监控,celery-exporter 输出 Prometheus 指标,django-celery-results 提供 ORM 结果后端,django-redis 可作 Redis 缓存/代理配套。替代方案包括 django-q2、django-dramatiq、huey、django-tasks,选择取决于是否需要零外部依赖、更强消息保证或面向未来 Django 标准。

具体收费与平台支持暂未提供。