FlaskでPythonファイルが更新されない問題を解決する方法

flaskでpythonファイルを更新して、webサーバーにアップロードしてもすぐにはブラウザ上に更新されないが、これはmod_wsgiがデーモンモードで動いていないのが原因。mod_wsgi には組み込みモードとデーモンモードふたつの動作モードがありデフォルトでは組み込みモードとなる。組み込みモードで動いていると、apacheを再起動しないとpythonファイルが更新されない。

一方、デーモンモードでは、日付を更新したwsgiファイルをアップロードするとpythonファイルも更新される。wsgiファイルの日付を更新するには、ファイルFTPソフトでwsgiファイルをアップロードし直すだけ。ファイル内容に変更がなくても、ファイルがアップロードされればファイルの日時がアップロード時のものに変更されるので、ブラウザの次回アクセス時にpythonファイルも更新される。

ページ中盤の更新の条件が参考になる

CakePHP使いがDjangoでサイトを作ってみた 〜わずか二行で自動更新ON〜 | 日記の間 | あかつきのお宿
『こんなんどうだろう的なお話 わずか二行のコードで実装できる 本番環境でやるのは推奨できないかも』自作の小説や楽曲がうっかりちゃっかりひっそり存在しているところです。主に四行小説に力入れてます。一応、エンジニアとしての物言いもしているご様子。あることやないこと、真面目なことやいやらしいこと、どうでもいいことやもっと...

組み込みモードからデーモンモードの変更するのに、最低必要なのは以下の二行の記述。

# httpd.confに記述
# WSGIをデーモンで実行する設定
WSGIDaemonProcess myflaskapp processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup myflaskapp

ファイルの更新はSSHでサーバーに接続し、touchコマンドを実行していい

$ touch adapter.wsgi

参考サイト

mod_wsgiをdaemon modeで動かす
mod_wsgiの動作モードについて apache の mod_wsgi には2つの動作モードがある。 組み込みモード(embedded mode) と デーモンモード(daemon mode) である。 embedded mode embedded mode では、WSGIアプリケーションのpythonは、apach...
タイトルとURLをコピーしました