supervisor管理python进程

前言

        平时开发调试中使用conda环境,项目比较多环境多,而且命令繁杂,每一次启动项目都可能会因为忘记启动方式而频繁报错。现在可以通过supervisor来管理,只需要配置几个文件,就可以轻松通过简单一致的命令启动工程,并且保持在后台运行,如果程序异常中断,还可以自动重启。

安装

apt install supervisor

生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

在配置文件里修改配置内容,一般在配置文件的最后面

[include] files = /etc/supervisord.d/*.conf

为每个工程配置conf

/etc/supervisord.d是一个所有进程配置的父文件夹,比如有project1,project2,project3,那么/etc/supervisord.d文件夹中就会有project1.conf,project2.conf,project3.conf

创建配置文件夹

mkdir /etc/supervisord.d/

配置相关信息

vim /etc/supervisord.d/project1.conf

示例配置内容

[supervisord] 
strip_ansi = true [program:project] 
directory = /data/ai_lab/msf/ComfyUI 
command = /home/username/miniconda3/envs/project_env/bin/python main.py --listen 
autostart = true 
autorestart = true 
user = root 
stdout_logfile = /data/project.log
  1. project_name 必须是唯一的,否则将会出现错乱

  2. directory 填写你启动脚本时的工作目录,如果你使用脚本的绝对目录,那么directory可以不设置

  3. command是执行脚本的命令,不需要使用nohup让其变为后代进程,supervisor会自动将其变为后台进程,command最好是虚拟环境bin目录下的python解释器的绝对路径,否则可能会找错解释器路径,导致程序报错。

  4. autostart 配置为True, supervisor 启动时,任务跟随启动

  5. autorestart 配置为True, 进程不存在时会自动重启, 默认重启3次,想修改重启次数,可以配置startretries, 设置最多重启的次数

  6. user 设置启动任务时所用的用户,supervisor 有必要使用root账号启动,这样才有权限配置其他启动账号

  7. stdout_logfile 配置输出日志,可以将所有进程日志存放在一个好找的文件夹,或者都存放到每一个工程的目录下,但为了方便找,一般统一放在一个目录里。

启动supervisor

supervisord -c /etc/supervisord.conf

supervisorctl管理进程

supervisorctl 是 supervisord 的一个命令行客户端工具,使用supervisorctl可以遍历的对进程进行管理,支持的命令如下

project是示例配置内容中[program:project]的project

supervisorctl status #查看进程状态 
supervisorctl stop project #终止某个进程 
supervisorctl start project #启动某个进程 
supervisorctl restart project #重启某个进程 
supervisorctl reread #更新配置,根据最新的配置启动程序,会启动已经运行的程序 
supervisorctl update #更新配置,重启配置有变化的进程,不会重启那些配置没有变化

参考链接:

https://zhuanlan.zhihu.com/p/264111843

https://github.com/Supervisor/supervisor/issues/85

http://supervisord.org/configuration.html#supervisord-section-values

https://blog.csdn.net/codeswarrior/article/details/107511960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ day55 判断子序列 不同的子序列

题目1:392 判断子序列 题目链接:判断子序列 对题目的理解 判断字符串s是否为t的子序列 字符串s和字符串t的长度大于等于0,字符串s的长度小于等于字符串t的长度,本题其实和最长公共子序列的那道题很相似,相当于找两…

HashMap相关专题

前置知识:异或运算 异或运算介绍 异或有什么神奇之处(应用)? (1)快速比较两个值 (2)我们可以使用异或来使某些特定的位翻转,因为不管是0或者是1与1做异或将得到原值的相…

IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!

9 Docker 在 Docker 镜像层内预览文件 现在可以在 Services(服务)工具窗口中轻松访问和预览 Docker 镜像层的内容。 从列表选择镜像,选择 Show layers(显示层),然后点击 Analyze image for more informati…

<软考>软件设计师-2操作系统(总结)

(一) 进程管理 1 操作系统概述 1-1 操作系统定义: 能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。 1-2 操作系统的作用: 1 通过资源管理提高计…

7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合

今天给同学们分享一篇生信文章“Analysis and Experimental Validation of Rheumatoid Arthritis Innate Immunity Gene CYFIP2 and Pan-Cancer”,这篇文章发表在Front Immunol期刊上,影响因子为7.3。 结果解读: DEG筛选和数据预处理 数据在…

Helplook VS Google Docs:一对一比较

还记得Google Docs在2006年一炮走红的时候吗?它很大程度地改变了协作方式,也减少了附加文件和频繁保存的麻烦。相比Microsoft Word,很多人更喜欢Google Docs的简单性。 但是时代也在不断地发展。像HelpLook这样的新竞争对手也可以提供先进的…

字符集——带你了解UTF-8的前世今生

文章目录 字符集的来历汉字和字母的编码特点Unicode字符集字符集小结编码和解码开发约定 字符集的来历 计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一…

前端面试高频考点—事件循环Event loop

目录 事件循环 执行步骤 概念讲解 主线程 微任务(micro task) 宏任务(macro task) Event Loop经典例题 这段代码的执行结果是什么? 正确答案: 具体流程: 事件循环 主线程从"任务队列"中读取执行事件,这个过程…

File类—递归文件搜索执行脚本文件

文章目录 一、需求分析二、File类2.1 File对象的创建2.2 File判断和获取方法2.3 创建和删除方法2.4 遍历文件夹方法 三、Runtime类—常见api四、递归文件搜索执行脚本文件 一、需求分析 在本篇博客中,我们想通过递归文件的方式,在D:\\判断下搜索QQ.exe这…

麒麟V10安装kerberos客户端

麒麟V10系统安装kerberos客户端 当系统具备yum镜像源的时候需要执行安装命令 yum install krb5-devel krb5-client krb5-libs -y 会提示报错 “未找到匹配的参数:krb5-client” 此时我们需要手动安装krb5-client 安装包链接放到了这里 链接: https://pan.baidu.com/s/1x1YVr6…

SQL Server的安装和首个库的创建

一、熟悉SQL Server的安装环境; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面: 一步步按照提示往下走即可,把SQL Server 2022安装完成后再…

Leetcode刷题笔记题解(C++):LCR 021. 删除链表的倒数第 N 个结点

思路:用双指针去遍历链表,删除left的下一个节点,注意的是n大于等于链表长度即删除第一个节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {…

tmux简单使用

它允许你在一个终端窗口中创建多个终端会话,并在它们之间进行切换。以下是tmux的一些主要用途和功能: 多窗口: Tmux允许你在一个终端中创建多个窗口。每个窗口可以包含一个或多个终端会话,你可以轻松地在这些窗口之间切换。面板分…

不愧是字节出来的,太厉害了。。。

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

Jmeter 接口-加密信息发送(一百九十九)

方式1:使用函数助手 比如MD5加密方式: 如图,需要对${user}进行MD5加密 1、打开函数助手,找到MD5,输入需要加密的值 2、将${__MD5(${user},)}放到请求中 3、查看请求,请求成功 方式2:导入jar包…

Docker实战【镜像部署】

文章目录 💥 简介💡 基础-Tomcat镜像部署🎖️ 企业实战-制作Tomcat项目镜像🎯 企业实战-Docker部署SpringBoot项目🚀 问题复盘🍓 总结 💥 简介 由于公司内部机器要做迁移,原系统机器…

深度学习优化器

不断优化 Example:for input, target in dataset:optimizer.zero_grad()output model(input)loss loss_fn(output, target)loss.backward()optimizer.step() import torch import torchvision.datasets from torch import nn from torch.nn import Sequential,Conv2d,MaxPoo…

题目:小明的彩灯(蓝桥OJ 1276)

题目描述&#xff1a; 解题思路&#xff1a; 一段连续区间加减&#xff0c;采用差分。最终每个元素结果与0比较大小&#xff0c;比0小即负数输出0。 题解&#xff1a; #include<bits/stdc.h> using namespace std;using ll long long; const int N 1e5 10; ll a[N],…

跨语种「AI同传」颠覆语音翻译!Meta谷歌连发重大突破

Meta谷歌接连放出重磅成果&#xff01;Meta开源无缝交流语音翻译模型&#xff0c;谷歌放出无监督语音翻译重大突破Translation 3。 就在Meta AI成立10周年之际&#xff0c;研究团队重磅开源了在语音翻译领域的突破性进展——「无缝交流」&#xff08;Seamless Communication&a…

Spring Cloud NetFlix

文章目录 Spring Cloud NetFlix1 介绍2 Eureka&#xff08;服务注册与发现&#xff09;2.1 介绍2.2 服务注册与发现示例2.2.1 Eureka Server&#xff1a;springcloud-eureka2.2.2 Eureka Client&#xff1a;springcloud-provider2.2.3 Eureka Client&#xff1a;springcloud-co…