Livereload + Flask + Flask SOcketIO + Flask Script を使用しています。問題は、SocketIO が gevent-socketio サーバーを必要とすることです。すべて livereload ではありません。誤解しないでほしいのですが、私はこの問題を解決したくありません。私は livereload を実行して css/sass/js の作業を行うだけなので、問題ありません。
しかし、クライアントが socketIO サーバーに接続しようとするたびにスローされる例外は、私を大いに悩ませます。だから私はJavaScriptを無効にすることができると思っていましたが、私のアプリは主にAngularに依存してディレクティブを非同期にレンダリングするため、スタイルを切り替えるためのタグがページにありません. 次に、構成プロパティを記述できるので、ページをロードするとJinja2がそれをjavascript変数として提供し、Falseに設定されている場合に特定のsocket-io jsファイルをロードしません。
config.py で設定します。
class Config:
LIVERELOAD = False
FLask-Script で livereload サーバーを実行します
class liveReloadServer(Command):
"""prints hello world"""
def run(self):
with app.app_context():
server = Server(app.wsgi_app)
Config.LIVERELOAD = 'True'
server.serve(port=8080)
config プロパティを JavaScript 側に渡す
var LIVERELOAD = "{{ config['LIVERELOAD'] }}";
しかし、これは機能しません (LIVERELOAD は常に True を表示します)。Config クラスが既に Flask アプリ オブジェクトに挿入された後にプロパティを設定しているためです。別の方法はありますか?