Python: 无法使用 subprocess.run 启动 JSON 服务器

Python: Unable to start the JSON server using subprocess.run

Objective : 使用 python 从 windows 命令提示符启动 JSON 服务器并验证它实际上已经首先检查“http://localhost:3000”之类的字符串(请参阅屏幕截图中的命令输出)

已识别问题: 由于该命令未返回任何内容,因此我无法验证任何内容。 什么是 possible 解决方案或解决方法?

代码编写:

我试过使用:

ret = subprocess.run('json-server --port 3000 --watch db.json', shell=True)

此外,尝试了子流程中的以下方法和 os 类

subprocess.call
subprocess.check_output
os.system

使用subprocess.Popen作为新进程中的子程序启动json-server。然后通过向 localhost:3000.

发送 http 请求来验证它是否已启动

正在启动服务器:

import subprocess
from signal import SIGKILL

p = subprocess.Popen('json-server --port 3000 --watch /tmp/db.json', shell=True)

# printing output of json-server
try:
    outs, errs = p.communicate(timeout=15)
    print(outs)
except subprocess.TimeoutExpired:
    p.send_signal(SIGKILL)
    outs, errs = p.communicate()

发送验证请求:

import urllib.request
with urllib.request.urlopen("http://localhost:3000") as res:
    print(res.status)

请注意 json-server 是守护进程,在您停止、终止它或遇到意外异常之前不会停止。

因此,除非您在 Python 代码或 windows 进程浏览器中停止,否则执行此代码后它将是 运行。