Skip to main content

一个库库进程管理的Python丰富的控制参数满足各种需求

项目描述

示例 Python 进程管理器

一个高性能运行流程管理的Python库丰富的控制参数

仅支持 Linux/Unix

使用场景

  • 需要不影响业务(一致性)的情况下管理流程,比如stop/reload/restart
  • 需要nohupscreen等运行
  • 需要驻留后台

特点

极少代码检测,即可实现优雅停止、重载(重启),kill -9强制使用直接处理,不影响数据处理或写入进程,可以sppm_cli将Shell命令封装成服务进程。__

安装

pip install sppm

sppm_cli(sppm客户端)说明

翻译

usage: /usr/bin/sppm_cli --no-daemon -v -l --name progress_name [--start|--stop|--reload|--shutdown|--restart|--status] [shell]

Sample Python Process Manager 客户端,直接将Shell命令转换为可管理的服务进程,方便管理。比如管理SpringBoot程序

positional arguments:
  shell                 执行的Shell命令,配合 --start 或 --restart 参数使用

options:
  -h, --help            show this help message and exit
  --no-daemon           不使用进程管理模式
  -l {0,1,2,3,4,5}, --log-level {0,1,2,3,4,5}
                        日志级别,0(CRITICAL)、1(ERROR)、2(WARNING)、3(INFO)、4(DEBUG)、5(TRACE),默认等级3
  --start               启动子进程
  --stop                等待子进程正常退出
  --reload              等待子进程正常退出,并启动新的子进程
  --shutdown            强制杀掉子进程
  --restart             强制杀掉子进程,并启动新的子进程
  --status              显示子进程状态
  -v, --version         显示版本信息
  --name NAME           显示的进程名称,仅支持字母、数字和下划线组成的字符串
  --user USER           指定运行Shell命令的用户,配合 --start 或 --restart 参数使用

使用实例

启动服务进程

sppm_cli --name foo '/usr/bin/python -m http.server' --start --user $USER

查看服务过程

sppm_cli --name foo --status

pid                  : 237764
ppid                 : 237763
alive                : true
uptime               : 23 second(s)
human readable uptime: 23 second(s)
create time          : 2022-06-17 17:58:42.470000
active               : false
last active time     : 2022-06-17 17:58:43.300041

重启服务过程

sppm_cli --name foo '/usr/bin/python -m http.server' --restart --user $USER

停止服务进程

sppm_cli --name foo --stop

sppm代码库说明

翻译

usage: examples/example.py --no-daemon -v -l [--start|--stop|--reload|--shutdown|--restart|--status]

简化进程管理的命令行工具

optional arguments:
-h, --help            show this help message and exit
--no-daemon           不使用进程管理模式
-l {0,1,2,3,4,5}, --log-level {0,1,2,3,4,5}
                日志级别,0(CRITICAL)、1(ERROR)、2(WARNING)、3(INFO)、4(DEBUG)、5(TRACE),默认等级3
--start               启动子进程
--stop                等待子进程正常退出
--reload              等待子进程正常退出,并启动新的子进程
--shutdown            强制杀掉子进程
--restart             强制杀掉子进程,并启动新的子进程
--status              显示子进程状态
-v, --version         显示版本信息

使用

代码

import sppm

sppm.sppm_start(foo)

更多细节,请查看examples/example.py以及examples/example_working_lock.py

管理

更多使用方法,请执行python3 examples/example.py -h查看帮助信息。

开始
python3 examples/example.py --start
2019-12-01 17:45:07 15048 [INFO] **** 按Ctrl+C可以终止运行 ****
2019-12-01 17:45:07 15049 [INFO] Run 0 time(s) task->foo.
2019-12-01 17:45:17 15049 [INFO] Run 1 time(s) task->foo.
2019-12-01 17:45:27 15049 [INFO] Run 2 time(s) task->foo.
2019-12-01 17:45:37 15049 [INFO] Run 3 time(s) task->foo.
^C2019-12-01 17:45:47 15049 [INFO] Run 4 time(s) task->foo.
执行exit_callback函数

指定日志等级:

python3 examples/example.py --start -l 5
查看状态
python3 examples/example.py --status
pid                  : 16728
ppid                 : 16727
alive                : true
uptime               : 152 second(s)
human readable uptime: 2 minute(s), 32 second(s)
create time          : 2019-12-01 18:32:30.300000
active               : false
last active time     : 2019-12-01 18:32:30.696024
python3 examples/example.py --stop

运行多个程序

python3 examples/example.py --start

SPPM_ENV =示例/.sppm_env_working_lock python 示例/example_working_lock.py --start
$ python3 examples/example.py --status
pid                  : 17404
ppid                 : 17403
alive                : true
uptime               : 48 second(s)
human readable uptime: 48 second(s)
create time          : 2019-12-01 18:49:47.880000
active               : false
last active time     : 2019-12-01 18:49:48.273476


$ SPPM_ENV=examples/.sppm_env_working_lock python examples/example_working_lock.py --status
pid                  : 17397
ppid                 : 17396
alive                : true
uptime               : 40 second(s)
human readable uptime: 40 second(s)
create time          : 2019-12-01 18:49:25.690000
active               : true
last active time     : 2019-12-01 18:50:06.127305

配置文件

情况下,程序自动从环境变量SPPM_ENV加载Python文件目录下的.sppm_env

$ cat examples/.sppm_env
pid=/tmp/example.pid
child_pid=/tmp/example_child.pid
lock=/tmp/example.lock
log=/tmp/example.log

运行多个程序时,每个程序必须单独配置环境变量SPPM_ENV指向的配置文件。 --user USER 指定运行Shell 命令的用户,配合 --start 和 --restart 参数使用

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置分布

sppm-2.1.4-py3-none-any.whl (16.7 kB 查看哈希

已上传 py3