最初に: 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> は、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なしで同じことを実装しました(代わりに2つの無限ループ)、それは動作します
server=...
からまでのすべてをラップしようとしましたが、結果はありませんでしbreak
たif __name__ == "__main__:"
私は何が欠けていますか?