Apache+mod_pythonでDjangoアプリを実行しています。コードにいくつかの変更を加えると、Apacheを再起動するまで、すぐに効果がある場合と効果がない場合があります。ただし、他のものも実行している本番サーバーであるため、実際にはそうしたくありません。それを強制する他の方法はありますか?
明確にするために、私は一部の人々がそれを間違えているのを見るので、私は本番環境について話している。もちろん、開発にはDjangoの開発サーバーを使用しています。
Apache+mod_pythonでDjangoアプリを実行しています。コードにいくつかの変更を加えると、Apacheを再起動するまで、すぐに効果がある場合と効果がない場合があります。ただし、他のものも実行している本番サーバーであるため、実際にはそうしたくありません。それを強制する他の方法はありますか?
明確にするために、私は一部の人々がそれを間違えているのを見るので、私は本番環境について話している。もちろん、開発にはDjangoの開発サーバーを使用しています。
可能であれば、mod_wsgi に切り替える必要があります。これは現在、とにかく Django を提供するための推奨される方法であり、メモリとサーバー リソースの点ではるかに効率的です。
mod_wsgi では、各サイトに.wsgi
関連付けられたファイルがあります。サイトを再起動するにtouch
は、関連するファイルとそのコードのみが再読み込みされます。
他の人が示唆しているように、代わりにmod_wsgiを使用してください。WSGIスクリプトファイルにタッチするか、コードの変更を探すモニターを介して自動リロードを実行するには、UNIXでデーモンモードを使用している必要があります。埋め込みモードを使用する場合、Windowsで同じことを実現するために少し手を使うことができます。すべての詳細は次の場所にあります。
httpd.conf ファイルで「MaxRequestsPerChild 1」を設定すると、接続数を 1 に減らすことができます。ただし、本番環境ではなく、テストサーバーでのみ実行してください。
また
既存の接続を強制終了せずに apache を再起動したくない場合は、「apache2ctl グレースフル」を実行することで「グレースフル」に再起動できます。既存の接続はすべて完了することができます。
Django に含まれているテスト サーバーを使用します。(のように./manage.py runserver 0.0.0.0:8080
) 開発中に必要なほとんどのことを行います。唯一の欠点は、マルチスレッドで同時リクエストを処理できないことです。
すべてのコード変更がすぐに反映されるように、Apache の最大インスタンス数を 1 に設定するというトリックがあると聞きましたが、他のサービスを実行しているとのことなので、そうではないかもしれません。