Pythonプログラミング言語を使用したマイクロフレームワークFlaskを使用してREST APIを作成しています。デバッグモードでは、アプリケーションはソースコードの変更を検出し、同じホストとポートを使用して再起動します。プロダクションモード(デバッグなし)では、ソースコードを変更するとアプリケーションが自己を再起動しないため、自分でアプリケーションを再起動する必要があります。この場合の問題は、以前のバージョンのアプリケーションで以前に使用されていたポートを使用してアプリケーションを実行できないことです。したがって、すべてのアプリケーション更新でポートを変更するように求められます。Python /フラスコアプリケーションのポート管理
これは私のコードの外観です。
from flask import Flask, jsonify, request
import json
import os
app = Flask(__name__)
@app.route('/method1', methods=['GET'])
def method1():
return jsonify({"result":"true"})
@app.route('/method2', methods=['GET'])
def method2():
return jsonify({"result":"true"})
if __name__ == '__main__':
app.run(debug=True,port=15000)
この問題を解決するにはどうすればよいですか?またはアプリケーションのアップデートごとにポートを変更する必要がありますか?
問題を再現できません。 productinoでアプリを再起動すると、ポートを再利用できます。 [編集]に[mcve]を含めるようにしてください。また、本番環境ではdevサーバを使用しないでください。 – davidism
アプリを再実行しますが、決して使用することはできません。 HTTPリクエストとアプリケーションを送信しようとすると応答しません –
おそらく、GunicornのようなHTTPサーバを稼動しているでしょう。同じポートで何が実行されているかを見てください( 'lsof -i TCP:15000'コマンドを使うことができます.Gunicornを使用していなくても、特定のポートを使ってインスタンスのPIDを得ることができます)。それでもやり直す前にそれを殺すべきです。 Gunicornにはファイルの変更時に再起動するオプションがありますが、私は運用環境ではお勧めしません。 –