0

最初に: 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はまだ実行中です...

  1. 追加してみましたserver.join() after terminate() but Flask is running anyway
  2. 私はFlaskなしで同じことを実装しました(代わりに2つの無限ループ)、それは動作します
  3. server=...からまでのすべてをラップしようとしましたが、結果はありませんでしbreakif __name__ == "__main__:"

私は何が欠けていますか?

4

1 に答える 1