Django + Celery 实现异步发送短信 实现及部署

第一步 安装celery 及redis(不是redis服务,是与redis交互的库):  
pip install pip install -U celery==4.3.0 -i https://pypi.douban.com/simple (版本可根据实际来定,这里使用的是4.3.0版本)
pip install redis -i https://pypi.douban.com/simple
 
第二步  项目里集成celery (即在manage.py同级的目录下新建一个 celery_mq 包)
第三步  在celery_mq 中增加 main.py(celery实例化,主文件)  config.py (celery配置文件 即队列和结果 redis库)  result_backend 的结果是有过期时间的是一天 (可以通过ttl key 查看)
第四步  在文件夹中增加一个 包用来定义需要执行的耗时操作这里做的是 异步发送短信 所以是 sms ,接着再 sms中定义一个task.py的文件,必须是这个名字,然后把具体的逻辑代码写在task.py文件中,也可以增加需要的外部第三方的包或者文件
第五步  在需要调用异步任务的地方导入在 task.py 中定义好的方法
第六步 启动 另开一个窗口(先把服务启动)在项目根目录下执行 即看到manage.py的层级
        celery -A celery_mq.main worker -l info
            -A指对应的应用程序, 其参数是项目中 Celery实例的位置。
            worker指这里要启动的worker。
            -l指日志等级,比如info等级
 
 
部署celery (supervisor)
[program:celery_mq]
directory=/var/www/server/TypeServer  (celery_mq所在的目录)
command=celery -A celery_mq.main worker -l info   (启动的命令)
priority=1
process_name=%(program_name)s_%(process_num)02d
numprocs=1
autostart=true
autorestart=true
stderr_logfile=/var/log/celery/celery_mqErr.log
stdout_logfile=/var/log/celery/celery_mq.log
redirect_stderr=true
 
进入 supervisorctl 客户端 执行 update (此时如果你的日志文件所在目录没有创建,则会报错,需要先去创建然后接着执行update)
然后接着 会提示 进程 celery_mq added process group 意思是加到进程组了
然后status 即可看到 处在 running 的状态,然后可以去看一下日志
接着就是测试看看是否可以生效了 
测试可以查看日志和redis里的值是否能对应上,对应上即可(测试没问题) 
posted @   以赛亚  阅读(314)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示