1

を使用して、メインスレッドとは別のスレッドでポート 6677 をリッスンする単純な TCP サーバーを起動しますthreading.start_new_thread()。基本的に、このサーバーが行うことは次のとおりです。

sock = socket(AF_INET, SOCK_STREAM)
sock.bind(('', 6677))
sock.listen(5)
...
print 'Listening...'

while True:
    conn, addr = sock.accept()
    print 'connected!'
    ...

別のスレッドでそのサーバーを起動した後、メイン スレッドで単純な Flask アプリケーションを実行します。

app.run()

デフォルトではポート 5000 を使用します。Flask アプリは正常に動作しますが、他のスレッドの bind() 呼び出しで [Errno 98] アドレスが既に使用されています。これは、二次スレッドから「Listening ...」が出力された後です。ここで行われている黒魔術は何ですか?2 つのサーバーが同じアドレスの異なるポートでリッスンできないことはありますか?

4

1 に答える 1

1

電話しますapp.run(debug=True)か?

もしそうなら、Flask自動リロードシステムはあなたのプロセスを開始し、それを強制終了してから再び開始します(私は信じています)。

app.run(debug=True, use_reloader=False)代わりに行います。

于 2013-10-09T20:29:00.983 に答える