python 代码中开启后台线程执行其它脚本并指定线程名

337 阅读1分钟

需求

写一个 flask 接口,接收 post 请求,获取其中的 rtsp 地址,将其作为参数在后台运行另一个脚本,并返回新脚本执行产生的文件 http 地址

关键点

  • 如果被调用的脚本还在运行中,需要杀掉该后台进程,而每次执行脚本的 PID 均不同,如何精确的杀掉运行脚本的进程?
  • 如何开启后台进程?
  • 怎么使本地的文件能以 http 形式供局域网内访问?

利用 setproctitle 修改进程名

安装 setproctitle

pip3 install setproctitle -i <https://pypi.douban.com/simple>

使用方法

将下面的代码放置在脚本的开头,脚本便能够以指定的进程名称执行

import setproctitle

# 指定该脚本运行时的进程名,需要时可以使用 pkill 杀掉该进程
setproctitle.setproctitle("trackProcess")

用后台进程运行 python 脚本

python xxx.py & 只需要在最后加上 & 符号

但是如果退出 vscode,进程就会中断,前面加一个 nohup 可以让进程后台永久运行,即 nohup python xxx.py &

flask 静态文件夹

与运行的接口文件同级目录下的 static 文件夹可供 http 访问

下图 rtsp2flv.py 是运行文件,static 下的文件可以以 http://IP:PORT/static/XXX 的形式在浏览器访问

image.png

基础知识

基本 linux 命令

查看进程列表:ps aux

按进程名杀掉进程:pkill xxx

rtsp

rtsp 是一个实时流应用层传输协议