如何在PyCharm中运行Django测试环境下的Celery
嘿,我日常开发Django+Celery项目时,经常在PyCharm里折腾测试环境的Celery运行,给你分享几个实用的方法:
方法一:直接在PyCharm终端启动Celery Worker
这是最直接的方式,适合临时调试:
- 先确认PyCharm终端已经激活了你的项目虚拟环境(一般打开终端会自动激活,要是没激活,手动输入:
source venv/bin/activate(Linux/macOS)或venv\Scripts\activate(Windows)) - 切换到你的Django项目根目录(就是存放
manage.py的文件夹) - 运行Celery启动命令:
记得把celery -A your_project_name worker --loglevel=infoyour_project_name替换成你实际的Django项目名称(比如项目叫my_store,就改成celery -A my_store worker --loglevel=info) - 如果你的项目用到了Celery Beat定时任务,再开一个终端启动Beat:
celery -A your_project_name beat --loglevel=info
方法二:配置PyCharm运行配置(长期使用更省心)
把Celery配置成PyCharm的Run/Debug项,以后一键启动就行:
- 点击PyCharm顶部菜单栏的
Run->Edit Configurations... - 点击左上角的
+号,选择Python类型 - 在
Name栏填个好识别的名字,比如Celery Worker - 测试环境 - 在
Script path里,要么直接填celery(虚拟环境激活状态下PyCharm能自动找到),要么手动指定虚拟环境里的Celery脚本路径,比如venv/bin/celery(Linux/macOS)或venv\Scripts\celery.exe(Windows) - 在
Parameters栏输入:-A your_project_name worker --loglevel=info,替换项目名 - 在
Working directory里选择你的Django项目根目录(必须是manage.py所在的文件夹) - 点击
Apply保存配置,之后直接点Run按钮就能启动Celery Worker了 - 同理,要配置Celery Beat的话,重复上述步骤,把
Parameters改成-A your_project_name beat --loglevel=info即可
测试环境的小技巧
- 如果是做单元测试,不想启动真实的Celery Worker,可以在测试环境的
settings.py里加一行配置:
这样Celery任务会同步执行,不用启动Worker,非常适合快速跑单元测试CELERY_TASK_ALWAYS_EAGER = True - 确保你的Django测试环境已经正确配置了Celery的Broker(比如测试用
memory://,或者本地Redis)和结果后端,不然任务可能无法正常执行 - 启动Worker后,直接用PyCharm的测试运行器执行你的测试用例,或者在终端运行
python manage.py test,Celery任务就会被Worker处理了
内容的提问来源于stack exchange,提问作者Dandelion




