2017-07-18 9 views
-2

私は同じサーバー上で実行されるいくつかのフラスコアプリケーションを実装しています。私は、2つ以上のサーバが動作しているときに、正常に動作しないシンプルフラスコサーバをシャットダウンする推奨方法について懸念しています。 this snippetからのシャットダウン方法は次のとおりです。複数のフラスコサーバーを実行して個別にシャットダウンする

from flask import request 

def shutdown_server(): 
    func = request.environ.get('werkzeug.server.shutdown') 
    if func is None: 
     raise RuntimeError('Not running with the Werkzeug Server') 
    func() 

私はfunc()方法は、多分私は何かを明らかに行方不明ですので、定義されている場所を確認しませんが、どのようにシャットダウン方法がシャットダウンするサーバのどれを知っているのだろうか?私はサーバーを指定するいくつかの種類のパラメータを渡したいと思います。何か案は?

+0

サーバをシャットダウンしようとしているのですか、または同じサーバで実行されているアプリを無効にしようとしていますか?どのように今、さまざまなアプリケーションを実行していますか? ( 'func'は' request.environ.get(..) 'から割り当てられ、werkzeugからシャットダウン関数を取得して呼び出します) – MatsLindh

+2

' func'は 'request.environによって返される呼び出し可能なものです。 get() '。 – quamrana

+0

サイドノート:スニペットは非公式で、メンテナンスされておらず、Flaskドキュメントの一部ではありません。 – davidism

答えて

0

アプリは、サービスを提供するサーバーとのみ対話します。それは、他の場所で稼動している他のサーバーについては知らない。 request.environ('werkzeug.server.shutdown')は、要求を処理するサーバーをシャットダウンする関数を指します。

Werkzeugデベロッパーサーバーは、サーバーのシャットダウンを可能にする上記のハックが発生しますが、WSGIサーバーには標準ではありません。開発環境では、devサーバーを使用しないでください。アプリケーション内からWSGIアプリケーション(この場合はFlask)をシャットダウンする標準的な方法はありません。とにかくこれを行う理由は決してありません。

関連する問題