2017-07-05 7 views
-1

私は次の操作を実行しようとしていた。フラスコのアプリケーションで実行した後に、追加のpythonスクリプトを実行しませんか?

import webbrowser 
app = Flask(__name__) 
... 

host = "0.0.0.0" 
port = 9991 
print "running app." 
app.run(host=host, port=port) 
print "about to open browser" 
webbrowser.open("http://localhost:%s" % port) 

と、私はこれを行うとき、それはので、私はprint文を見ることはないrun後にprint文を実行しません、またブラウザが開きません。

これを処理するにはどうすればよいですか?サブプロセス?ような何かないのはなぜ

+2

はい、 'しばらく(1)' '使用などapp.run()'を考えますあなたがしようとしていることを達成するためのスレッドやプロセス。 – PYA

+1

私はrunの内部コンテンツを見ていませんでしたが、何らかのループが作成されたと推測しました。おそらく私はapp.run()のサブプロセスを作成してから数秒後にwebbrowser.openを呼び出すべきだと思います(サーバーを初期化するために少し待ってください) – Fallenreaper

+1

別のプロセスで 'print'を呼び出すべきです'app.run()' – PYA

答えて

1

print "Opening browser..." 
webbrowser.open("http://localhost:%s" % port) 
print "Running app..." 
app.run(host=host, port=port) 

フラスコサーバは通常、すぐに起動し、 はそれほど問題はないはずです。しかし、ブラウザによって報告された問題の「サーバーが見つかりません」のソートがある場合は、次のことを試してください。

import subprocess, time 
print "Opening browser in 3 seconds..." 

subprocess.Popen(['python', '-c', 'import time, webbrowser; time.sleep(3); webbrowser.open("http://localhost:%s")' % port]) 
print "Running app..." 
app.run(host=host, port=port) 
+0

これは私のために働く。私の考えは、「サーバーが正しく設定される前に、ブラウザーがエンドポイントにナビゲートするとどうなりますか?」だから私はブラウザを開く前にサーバーを起動しようとしていたのです。 – Fallenreaper

+0

@Fallenreaperその後、 'webbrowser'のサブプロセスを開始し、少し遅延を加える必要があります。 –

+0

@Fallenreaper私は答えにサブプロセスの遅延を追加しました。あなたの考えを教えてください:) –

関連する問題