2012-11-23 30 views
8

誰でもモジュールが変更されたときにmod_wsgiがFlaskアプリケーションを自動的にリロードする方法を知っていますか?私はWSGIScriptReloading Onを試しましたが、運はありません。 official documentationは熊のようなものです...誰も知らないならば、私はそれを刺すでしょう。前もって感謝します!Flask + mod_wsgiソースコードの自動リロード

また、(Flaskリローダのような)構文エラーで永久にクラッシュすることができない場合、それはすばらしいでしょう。

答えて

0

「公式文書は何かクマのようです」とはどういう意味ですか?付属のレシピと間違っているもの:WSGIScriptReloadingは、あなたが期待する何をしない理由

その文書にも説明しています。

そして、構文エラーで永久にクラッシュすることはできません。これはApacheに組み込まれており、Apacheの全体のポイントは動作させ続けることです。

あなたは開発用にApache/mod_wsgiを使用しないでください。すべての人は、本番環境で自動ソースコードのリロードを使用しないでください。そうしたいとは思いません。

+0

を参照してくださいだけで最初の「RTFM」のためのSO上whinerコメントに対する免責事項です。 –

+0

ああ、誰も自動ソースコードのリロードについて2〜3時間を読んで読もうとしないことを意味します。 –

+0

さらに、これらの日々、文書を完全に読んだり読んだりする人はいません。彼らは、SOの人々が彼らのために研究を行い、すべての問題を解決することを期待しています。彼らが気づいていないのは、ユーザーが最初に自分自身を試してみたいと考えていないため、元のパッケージ作成者がユーザーを助ける手助けをすることができないため、サポートネットワークを破壊しているということです。 –

11

mod_wsgiとすると、.wsgiコードではなく、.wsgiの変更を探します。

私のワークフローはその後、ちょうど

$ touch MyWebApp.wsgi 
変更するには、最後に変更されたファイルのタイムスタンプを起こし

mod_wsgiコードをリロードするために私のコードの変更をアップロードすることです。

.wsgiファイルをローカルマシンに保存してから再度アップロードするか、SSH経由で行うことができます。

構文エラーについて多くはありませんが、コードは実行中でも実行中でもありませんが、修正プログラムにはtouchが再度実行されます。あなたがFTP経由で作業している場合のために外を見るために

つの落とし穴:それ以外の場合は、試してみて、間違ったコードから始めましょうあなたは「感動」.wsgiファイル最後をアップロードしてください。

+2

あなたが話していることは、mod_wsgiデーモンモードでしか動作しないことに注意してください。 –

+0

ありがとう、この答えは私のために働いています – jonprasetyo

+0

@GrahamDumpletonは、これはmod_wsgiで許容できるワークフローです、あなたの意見ですか? – johnny

1

生産現場で自動的にソースコードをリロードするのは非常に現実的な状況だと思います。バージョンごとにソースがデプロイされている環境を考えてみましょう。また、「プロダクション」シンボリックリンクはこれらのバージョンの1つを指しています。新しいバージョンをリリースしたい場合は、シンボリックリンクを別のパスにポイントするだけです。しかし、apacheとmod_wsgiは依然としてシンボリックリンクされたディレクトリからファイルを収集するため、タイムスタンプ、サイズ、またはw/eに基づいてリロード機構を適切に配置する必要があります。確かに、1つのアプリケーションが問題ではないかもしれませんが、活発に開発されている15-20のアプリケーションをホストするのはどうですか?このような状況では、ソースを自動的に再ロードしないのは、毎回Apacheを再起動する場合とは異なります。

質問に戻る:使用しているフレームワーク(この場合はフラスコ)に自動ソースコードの再読み込み用のプラグインまたはツールがない場合は、GrahamとMalphasの2つのオプションが最適です。 wsgiプロセスを起動して、監視システムを再起動または実装します。

1

WSGIScriptReloadingディレクティブを追加するのは正しいことです。 Flaskのドキュメントでは100%明確にはなっていませんが、Apacheは.wsgiファイルの変更を探します。推奨される解決策は、リリースプロセスの一環として、.wsgiファイルでtouchコマンドを実行することです。

0

私は、開発用にフラスコの内蔵サーバーを使用していますが、私はあまりにもApache mod_wsgiを好みます。私はprodとdevの設定ファイルを分けて、Flaskがコードの変更を自動的に検出して再読み込みできるように、dev設定でという指示文をTrueに設定しました。

+0

開発のためにmod_wsgi-expressを使用することを検討することを検討してください。私のブログでそれについての最近の投稿をチェックし、開発環境での使用についてもっと詳しく話し合う今後の記事を探してください。 –

0

この質問に対する正解は、フォルダーにある000-default.confに、WSGIScriptReloading Onを追加する必要があることです。

は、私は「公式ドキュメントは、クマの一種である」と考える傾向にある例以下

<VirtualHost *:80> 
     # The ServerName directive sets the request scheme, hostname and port that 
     # the server uses to identify itself. This is used when creating 
     # redirection URLs. In the context of virtual hosts, the ServerName 
     # specifies what hostname must appear in the request's Host: header to 
     # match this virtual host. For the default virtual host (this file) this 
     # value is not decisive as it is used as a last resort host regardless. 
     # However, you must set it for any further virtual host explicitly. 
     #ServerName www.example.com 

     ServerName sentiments.live 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html 
     WSGIDaemonProcess flaskapp threads=5 
     WSGIScriptAlias//var/www/html/sentiments/flaskapp.wsgi 

     <Directory sentiments> 
       WSGIScriptReloading On 
       WSGIProcessGroup sentiments 
       WSGIApplicationGroup %{GLOBAL} 
       Order deny,allow 
       Allow from all 
     </Directory> 
+0

デフォルト設定であるため、 '' WSGIScriptReloading On''は必要ありません。詳細については、http://modwsgi.readthedocs.io/en/develop/user-guides/reloading-source-code.htmlを参照してください。 –

+0

他にもいくつかの問題があります。 '' Directory''への引数は ''/'で始まる絶対パスでなければなりません。それ以外のものは不確定でグローバルApacheの設定に依存します。 –

+0

'' WSGIProcessGroup'の引数も '' WSGIDaemonProcess''に使用した名前と一致しません。その名前が定義されていれば間違ったデーモンプロセスグループとのマッチングが失敗します。 –

関連する問題