我在 subprocess.Popen 进程中在本地主机上运行烧瓶服务器。
我想知道这个进程中flask服务器分配了哪个端口,而不阻塞调用进程。然后我会使用 localhost:port 与烧瓶应用程序对话。
这是 server.py:
# server.py
import Flask
app = Flask(__name__)
@app.route('/')
def call_method():
return 'Hello'
if __name__ == '__main__':
app.run()
选项 1:将端口打印到标准输出,但我无法以编程方式访问它。此外,阻止调用过程
process = subprocess.Popen(['python', 'server.py'])
选项 2:捕获标准输出,但仅获取启动进程时缓冲的内容。这可能不包含包含端口的行。但是,由于我正在管道标准输出,这也会阻止调用者外壳。
process = subprocess.Popen(['python', 'server.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if process.stdout:
for line in process.stdout.readline():
print(line)
如何从返回的进程中获取端口,而不阻塞调用进程?