起初:我正在尝试编写用于控制 Flask 简单服务器的 GUI,因此我可以将我的应用程序分发给新手(使用 PyInstaller)
我正在使用多处理来启动 Flask 然后将其关闭,但将其关闭似乎是问题所在。我编写了简单的 cli-controller 作为概念验证,但它甚至忽略了 sys.exit()
代码:
from multiprocessing import Process
import sys
from myapp import app
def run():
app.run()
server = Process(target=run)
server.start()
while True:
x = raw_input("Input something:")
if x == "x":
server.terminate()
server.join(timeout=10)
print(server.exitcode)
print("end here")
break
print("All done!")
sys.exit(1)
但结果让我大吃一惊:(<Enter> 表示我按下了回车)
user@localhost:~$ ./run.py
Input something: * Running on http://127.0.0.1:5000/
* Restarting with reloader
Input something:x
None
end here
All done!
user@localhost:~$ <Enter> Traceback (most recent call last):
File "./run.py", line 42, in <module>
x = raw_input("Input something:")
EOFError
并且 Flask 仍在运行...
- 我尝试添加
server.join() after terminate() but Flask is running anyway
- 我在没有 Flask 的情况下实现了相同的功能(而是两个无限循环)并且它可以工作
- 我试着把所有东西都从头到尾包裹起来
server=...
,break
但if __name__ == "__main__:"
没有结果
我错过了什么?