一个 py 文件怎么同时启动两个服务?用命令行

2018-12-04 15:46:28 +08:00
 kidlfy

str_one=('python app.py --port=8099') str_two=('python app.py --port=8098') os.system(str_one) os.system(str_two)

这样写只会启动一个。是因为只 fork 了一个子进程 然后等待它结束 再往下运行 有什么办法同时运行两句命令启动两个服务呢

谢谢

2971 次点击
所在节点    Python
12 条回复
zh826256645
2018-12-04 15:55:37 +08:00
用 nohup 试试?或者 Supervisor
d0m2o08
2018-12-04 15:56:24 +08:00
搜 python threading
clino
2018-12-04 15:58:20 +08:00
此时不能用 os.system ,因为退出才返回
可以用 os.popen 试试
wwqgtxx
2018-12-04 16:02:53 +08:00
popen 呀,另外不要用楼上说的 os.popen,那个已经被标记为过时的了,平时用 popen 模块
xpresslink
2018-12-04 16:06:57 +08:00
要开多进程才行

import subprocess
subprocess.Popen(str_one)
subprocess.Popen(str_two)
kidlfy
2018-12-04 16:17:24 +08:00
@xpresslink 它会报 没有这个文件 的错误 但是 os.popen 就可以直接执行
www5070504
2018-12-04 17:09:57 +08:00
@kidlfy 试试用绝对路径 另外参数加上 shell=True
kidlfy
2018-12-04 17:38:32 +08:00
@www5070504 对, 可以了 谢谢 另外 你知道怎么关闭文件的时候 kill 掉所有的子进程吗 只能手动吗
www5070504
2018-12-04 17:45:41 +08:00
@kidlfy 注册信号处理函数 在 signal 库里 可以调用子进程对象的 kill 方法
www5070504
2018-12-04 17:51:34 +08:00
@kidlfy 或者记录子进程的 pid 用 os.kill() 前一种方法比较好一些但是说实话业务写完一般都得手动退出 多进程很容易出现不能完全退出的情况...
xmoiduts
2018-12-04 18:02:55 +08:00
能用 & 吗
python ………… &
xpresslink
2018-12-04 21:39:06 +08:00
@kidlfy 你加个绝对路径还不会么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX