You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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=info
    
    记得把your_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_TASK_ALWAYS_EAGER = True
    
    这样Celery任务会同步执行,不用启动Worker,非常适合快速跑单元测试
  • 确保你的Django测试环境已经正确配置了Celery的Broker(比如测试用memory://,或者本地Redis)和结果后端,不然任务可能无法正常执行
  • 启动Worker后,直接用PyCharm的测试运行器执行你的测试用例,或者在终端运行python manage.py test,Celery任务就会被Worker处理了

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

火山引擎 最新活动