You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Celery Worker动态设置DJANGO_SETTINGS_MODULE?

解决Celery Worker动态加载Django配置文件的方案

方案1:修改celery.py,动态读取环境变量

别在celery.py里硬写DJANGO_SETTINGS_MODULE,改成从环境变量读取,同时留个本地配置作为默认 fallback:

# celery.py
import os
from celery import Celery

# 优先取环境变量里的配置,没有就用本地开发配置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings.local')

app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

Windows下启动时,先正确设置环境变量(别用Linux的export,Windows用set),再启动Worker:

# 临时设置当前终端的环境变量(仅本次会话有效)
set DJANGO_SETTINGS_MODULE=your_project.settings.production
# 启动Celery Worker
celery -A your_project worker -l info

方案2:写启动脚本一键切换环境

给不同环境做专门的启动脚本,不用每次手动输命令:

Windows本地启动脚本(start_celery_local.bat)

@echo off
:: 先激活虚拟环境(如果用了的话)
call your_venv\Scripts\activate.bat
set DJANGO_SETTINGS_MODULE=your_project.settings.local
celery -A your_project worker -l info

Windows生产环境启动脚本(start_celery_prod.bat)

@echo off
call your_venv\Scripts\activate.bat
set DJANGO_SETTINGS_MODULE=your_project.settings.production
celery -A your_project worker -l info

Linux服务器启动脚本(start_celery_prod.sh)

#!/bin/bash
source your_venv/bin/activate
export DJANGO_SETTINGS_MODULE=your_project.settings.production
celery -A your_project worker -l info

用的时候直接双击bat文件(Windows)或者执行sh脚本(Linux)就行,省得每次手动敲命令。

方案3:复用项目已有的环境判断逻辑

如果你的项目本身就有根据环境变量自动切换配置的逻辑(比如读ENV变量),可以直接在celery.py里复用:

# celery.py
import os
from celery import Celery

# 读ENV变量,默认用local环境
env = os.getenv('ENV', 'local')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', f'your_project.settings.{env}')

app = Celery('your_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

启动时只需要指定ENV:

  • Windows:set ENV=production && celery -A your_project worker -l info
  • Linux:export ENV=production && celery -A your_project worker -l info

注意事项

  • 确保所有环境的Django配置文件里都正确配置了Celery参数(比如CELERY_BROKER_URL、CELERY_RESULT_BACKEND)
  • 如果用了虚拟环境,启动脚本里要先激活环境,不然可能找不到celery命令

内容的提问来源于stack exchange,提问作者Practical Bong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:50:28