8

Apache+mod_pythonでDjangoアプリを実行しています。コードにいくつかの変更を加えると、Apacheを再起動するまで、すぐに効果がある場合と効果がない場合があります。ただし、他のものも実行している本番サーバーであるため、実際にはそうしたくありません。それを強制する他の方法はありますか?

明確にするために、私は一部の人々がそれを間違えているのを見るので、私は本番環境について話している。もちろん、開発にはDjangoの開発サーバーを使用しています。

4

4 に答える 4

15

可能であれば、mod_wsgi に切り替える必要があります。これは現在、とにかく Django を提供するための推奨される方法であり、メモリとサーバー リソースの点ではるかに効率的です。

mod_wsgi では、各サイトに.wsgi関連付けられたファイルがあります。サイトを再起動するにtouchは、関連するファイルとそのコードのみが再読み込みされます。

于 2009-07-03T07:58:49.087 に答える
4

他の人が示唆しているように、代わりにmod_wsgiを使用してください。WSGIスクリプトファイルにタッチするか、コードの変更を探すモニターを介して自動リロードを実行するには、UNIXでデーモンモードを使用している必要があります。埋め込みモードを使用する場合、Windowsで同じことを実現するために少し手を使うことができます。すべての詳細は次の場所にあります。

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

于 2009-07-03T10:07:07.857 に答える
1

httpd.conf ファイルで「MaxRequestsPerChild 1」を設定すると、接続数を 1 に減らすことができます。ただし、本番環境ではなく、テストサーバーでのみ実行してください。

また

既存の接続を強制終了せずに apache を再起動したくない場合は、「apache2ctl グレースフル」を実行することで「グレースフル」に再起動できます。既存の接続はすべて完了することができます。

于 2009-07-03T08:01:27.240 に答える
-1

Django に含まれているテスト サーバーを使用します。(のように./manage.py runserver 0.0.0.0:8080) 開発中に必要なほとんどのことを行います。唯一の欠点は、マルチスレッドで同時リクエストを処理できないことです。

すべてのコード変更がすぐに反映されるように、Apache の最大インスタンス数を 1 に設定するというトリックがあると聞きましたが、他のサービスを実行しているとのことなので、そうではないかもしれません。

于 2009-07-03T07:41:34.097 に答える