windows守护进程Celery服务设置
1.方案
经过查找,windows环境下守护进程方式运行celery的几种实现方式
-
NSSM
NSSM是Windows环境下一款免安装的服务管理软件,它可以将应用封装成服务,使之像windows服务可以设置自动启动等。并且可以监控程序运行状态,程序异常中断后自动启动,实现守护进程的功能。不仅支持图形界面操作,也完全支持命令行设置。
-
Forever
Forever 是一种简单的命令行界面工具,用于确保特定脚本持续(永久)运行。Forever 的简单界面使其成为运行 Node.js 应用程序和脚本的较小部署的理想选择。
经过一番折腾后,发现forever可以管理直接运行的Python脚本,但是运行celery worker时,无法设置复杂的参数。
-
Task Scheduler
Windows自带的计划任务,celery 官网有提到这种方案Windows Tip: Run applications in the background using Task Scheduler,但是尝试未果。
-
自己写Python守护进程脚本
由于时间关系,此方案未尝试,有兴趣可以参考下面的文章。
Python 编写Windows服务程序:将Python作为Windows服务启动
Python实例浅谈之五Python守护进程和脚本单例运行
python 版的守护进程和Windows服务
2.NSSM
2.1 NSSM安装
将NSSM压缩包解压并放在安装的目录。将NSSM中win64(我的电脑为64位)加入环境变量。
celery 的版本不能高于4.0,因为4.0以后不支持windows了
2.2 NSSM安装celery服务
一定要以管理员的身份打开终端 ,否则可能无法建立服务
2.2.1 安装Beat服务
nssm install celery-demo-beat “C:\Python27\Script\celery.exe”
Service "celery-demo-beat" installed successfully!
安装一个服务名为celery-demo-beat的服务,程序为celery
nssm set celery-demo-beat AppDirectory D:\celery-demo
Set parameter "AppDirectory" for service "celery-demo-beat".
设置服务运行的文件夹,就是celery程序所在的文件夹
nssm set celery-demo-beat AppParameters -A celery_app -beat --loglevel=debug --config=run
Set parameter "AppParameters" for service "celery-demo-beat"
设置应用的执行的参数,celery_app
为celery应用名
nssm start celery-demo-beat
celery-demo-beat: START: 操作成功完成
启动应用服务
nssm status celery-demo-beat
SERVICE_RUNNING
2.2.2 安装worker服务
nssm install celery-demo-worker “C:\Python27\Script\celery.exe”
Service "celery-demo-worker" installed successfully!
安装celery-demo-worker服务
nssm set celery-demo-worker AppDirectory D:\celery-demo
Set parameter "AppDirectory" for service "celery-demo-worker"
设置工作目录
nssm set celery-demo-worker AppParameters -A celery_app worker --loglevel=debug -c 1
设置运行参数
nssm start celery-demo-worker
celery-demo-worker: START: 操作成功完成
nssm status celery-demo-worker
SERVICE_RUNNING
如果出现错误一般都是命令设置的错误,可以检查一下
2.3 NSSM 其他命令
2.3.1 安装服务
nssm install […]
2.3.2 启动服务
nssm start
2.3.3 停止服务
nssm stop
2.3.4 重启服务
nssm restart
2.3.5 查看服务状态
nssm status
2.3.6 手动轮转日志文件
nssm rotate
2.3.7 删除服务
nssm remove [confirm]
2.3.8 获取某项配置信息
nssm get [subparameter]
2.3.9 单独设置某项配置
nssm set [subparameter] value
2.3.10 重置某项配置
nssm reset [subparameter]
2.3.11 暂停/继续服务
nssm pause
nssm continue