关于supervisor-win的安装、配置和使用

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关


文章目录

  • 关于supervisord-win的配置和使用
    • [1. 介绍](#1. 介绍)
      • [1.1 主要功能](#1.1 主要功能)
      • [1.2 核心优势](#1.2 核心优势)
      • [1.3 配置示例](#1.3 配置示例)
    • [2. 与Python的兼容性](#2. 与Python的兼容性)
    • [3. 下载安装](#3. 下载安装)
    • [4. 配置](#4. 配置)
    • [5. 使用](#5. 使用)
    • [6. 拓展](#6. 拓展)
      • [6.1 重启策略配置](#6.1 重启策略配置)
      • [6.2 加载配置文件](#6.2 加载配置文件)
      • [6.3 监控和管理](#6.3 监控和管理)

📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。



关于supervisord-win的配置和使用

1. 介绍

Supervisord是一个进程控制系统,具有以下几个重要作用:

1.1 主要功能

  • 进程监控supervisord持续监控应用程序和进程,跟踪它们的运行状态

  • 自动重启 :当配置了autorestart=true时,它会在程序崩溃或意外退出时自动重启程序,确保服务的高可用性

  • 启动管理 :通过autostart=true配置,当supervisord服务启动时自动启动相关程序

  • 进程控制 :通过supervisorctl命令提供集中化的进程控制,支持启动、停止和重启操作

1.2 核心优势

  • 可靠性:通过自动从故障中恢复来确保关键应用持续运行
  • 集中管理:可以从单一界面管理多个进程
  • 日志管理 :通过stderr_logfilestdout_logfile配置捕获和管理应用程序的标准输出和错误日志
  • 用户上下文控制 :使用user参数在指定的用户账户下运行进程

1.3 配置示例

正如你在配置文件中看到的,supervisord使用以下设置:

  • autorestart=true启用故障时的自动重启
  • autostart=true启用自动启动
  • 日志文件路径来捕获应用输出
  • 用户和目录配置确保正确的执行环境

这使得supervisord成为生产环境中确保应用正常运行和自动恢复的关键工具。

2. 与Python的兼容性

在使用前需要注意,supervisord的版本与python的版本兼容问题

正常python3.10及之前的版本都没问题,当使用3.10之后的版本时,可能会出现兼容问题

建议python版本3.10及之前的版本,当必须使用3.10之后的版本时,可考虑pm2的使用。

关于python和supervisord的版本兼容问题参考文章:关于Python版本与supervisor版本的兼容性

3. 下载安装

首先需要安装库

bash 复制代码
pip install supervisor-win

若需离线安装可参考文章:Supervisord-Win 离线安装指南

安装完成后,可进行配置

4. 配置

supervisord的配置主要是在conf配置文件中

创建一个supervisord.conf文件,在其中配置如下参数

举例

conf 复制代码
# 程序名称
[program:supervisor_demo]
# 执行程序的入口文件
command=python.exe main.py
# 程序的工作目录
directory=E:/Python-p/supervisor_demo
# 当supervisord启动时自动启动该程序
autostart=true
# 当程序意外退出时自动重启
autorestart=true
# 放弃前的重试次数
startretries=3  
# 启动超时时间
startsecs=5
# stderrhandler和stdout_logfile用于分别记录错误日志和标准输出日志
stderr_logfile=log/supervisor_demo.err.log
stdout_logfile=log/supervisor_demo.out.log
# 日志文件大小 
stdout_logfile_maxbytes=10MB
# 日志文件保存个数
stdout_logfile_backups=10

5. 使用

可使用如下命令进行启动当前配置,并保持一致运行程序

(supervisord的好处就在于不用配置flask服务或者循环就可以让程序一直跑)

运行命令(文件当前路径下运行)

bash 复制代码
supervisord -c supervisord.conf

任意位置运行命令时需加上conf文件完整路径

bash 复制代码
supervisord -c E:\Python-p\supervisor_demo\supervisord.conf

6. 拓展

6.1 重启策略配置

supervisor提供了多种重启策略:

ini 复制代码
[program:supervisor_demo]
; ... 其他配置 ...
autorestart=true                    ; 总是重启,无论退出状态如何
; 或者
autorestart=unexpected              ; 只有在意外退出时才重启
startretries=3                      ; 放弃前的重试次数
exitcodes=0,2                       ; 预期的退出码(不会触发重启)

6.2 加载配置文件

创建配置文件后,需要执行以下命令:

bash 复制代码
# 重新读取supervisor配置
sudo supervisorctl reread

# 更新supervisor配置
sudo supervisorctl update

# 启动您的程序
sudo supervisorctl start supervisor_demo

6.3 监控和管理

您可以使用以下命令监控和管理您的程序:

bash 复制代码
# 查看状态
sudo supervisorctl status

# 停止程序
sudo supervisorctl stop supervisor_demo

# 重启程序
sudo su


📜文末寄语

  • 🟠关注我,解锁更多优质内容
  • 🟡技术前沿 | 实战干货 | 疑难解答,持续更新中
  • 🟢加入《全栈知识库》,与各领域开发者共创技术盛宴
  • 🔵进入《专属社群》,技术路上结伴同行,共同成长
  • 🟣点击下方名片,获取更多精彩内容👇

相关推荐
翔云1234561 小时前
服务器异常崩溃,GTID 是否会出现在 mysql.gtid_executed 表但不在 binlog 中
服务器·mysql·adb
零日失眠者1 小时前
⚠️ 警告!99%的开发者都踩过这个坑:Python3安装后系统彻底瘫痪!yum直接报废的真相
linux·python
G_Cloudpipe1 小时前
Nginx 服务器部署
运维·服务器·nginx
兔子零10241 小时前
从 Bun 被收购说起:AI 为啥训练离不开 Python,上线却越来越需要 JavaScript?
python·bun
AttaGain1 小时前
GitLab数据备迁移及系统升级
运维·服务器·gitlab
NullPointer81 小时前
第21章:音频添加服务
python·aigc
梁正雄1 小时前
9、Python面向对象编程-1
服务器·开发语言·python
郝学胜-神的一滴1 小时前
Python的内置类型:深入理解与使用指南
开发语言·python·程序人生
刘家炫1 小时前
Linux 基于 Epoll 的主从 Reactor 多线程模型
linux·服务器·reactor·项目·多路转接