需求
写一个 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 的形式在浏览器访问
基础知识
基本 linux 命令
查看进程列表:ps aux
按进程名杀掉进程:pkill xxx
rtsp
rtsp 是一个实时流应用层传输协议