Flaskにリクエストごとに設定ファイルをリロードさせる慣用方法はありますか?これは、運用中にサーバーをシャットダウンして再起動することなく、パスワードやその他の設定に関連する項目を変更できるようにするためです。Flaskの各リクエストでコンフィグレーションファイルをリロードするには?
編集:app.run(debug=True)
は、サーバーを再起動するため使用できません。本番環境では使用しないでください。次のようなおそらくデコレータ
:
def reload_configuration(func):
@wraps(func)
def _reload_configuration(*args, **kwargs):
#even better, only reload if the file has changed
reload(settings)
app.config.from_object(settings.Config)
return func(*args, **kwargs)
return _reload_configuration
@app.route('/')
@reload_configuration
def home():
return render_template('home.html')
それが関連している場合は、ここで私は今、設定をロードしています方法です:
マイapp/app/__init__.py
ファイル:
from flask import Flask
from settings import Config
app = Flask(__name__)
app.config.from_object(Config)
# ...
マイapp/app/settings.py
ファイル:
class Config(object):
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = os.urandom(32)
# ...
try:
from app.local_settings import Config
except ImportError:
pass
app.run(debug = True)は機能しませんか? – iScrE4m
@ iScrE4mいいえ。 2つの理由から、1)設定ファイルをリロードするだけでなく、サーバー全体を再起動します。 2)私はこれをプロダクションで実行しています –
前のリクエストハンドラで 'app.config.from_object'を呼び出すだけです。 – dirn