2009-07-03 8 views
8

私は、Apache +のmod_pythonの上のDjangoアプリケーションを実行している上で実行されているDjangoアプリケーションを再起動します。コードをいくつか変更すると、Apacheを再起動するまで、すぐに効果を発揮することがあります。しかし、私はそれが他のものを実行しているプロダクションサーバーなので、実際にはやりたくありません。それを強制する他の方法がありますか?は、Apache +のmod_pythonの

私はいくつかの人々がそれを間違って参照してください、私はの生産環境について話しています。開発のために私はDjangoの開発サーバーを使用しています。

答えて

15

可能であれば、mod_wsgiに切り替える必要があります。とにかくこれはDjangoに対応するためのrecommended wayであり、メモリとサーバリソースの面ではるかに効率的です。

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

+0

私はFastCGIで持っていたすべての問題の後で、このXXgiのことを少し怖がっています(確かに、それはLighttpdでしたが、まだです):http://stackoverflow.com/questions/393637/django-fastcgi-randomly-raising-オペレーションエラー。 wsgiが今すぐDjangoを導入するための推奨された方法であるかどうか分かりませんでした。これは以前はmod_pythonだったのですが?とにかく、私はそれを調べます。ありがとう! – ibz

+0

s/this things/these things/:) – ibz

+2

他のところで指摘したように、mod_wsgiデーモンモードを使用して、WSGIスクリプトファイルに触れるとリロードが発生する機能を取得する必要があります。 –

-1

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

私は1にApacheの最大のインスタンスを設定することトリックがあることを聞いたので、すべてのコードの変更は即座に反映されていること - しかし、あなたは他のサービスを実行しているので、これはあなたのケースではないかもしれないと言ったので。

+0

ザッツのhttpd.confに設定されている「のMaxRequestsPerChild 1」:すべての詳細はで見つけることができます。 – agiliq

0

あなたのhttpd.confファイルに「のMaxRequestsPerChild 1」を設定することにより、1への接続数を減らすことができます。しかし、それはテストサーバー上でのみ行うのであって、生産ではありません。

または

既存の接続を殺したいとまだあなたが「優雅apache2ctl」を行うことで、「優雅」、それを再起動することができますApacheを再起動しない場合 - すべての既存の接続が完了するまでに許可されます。

+0

"apache2ctl gracefully"はきちんとしたようです。私が探していたものではないが、間違いなくそれを調べるだろう。ヒントをありがとう! – ibz

4

他の人も示唆しているように、代わりにmod_wsgiを使用してください。自動リロード機能を使用するには、WSGIスクリプトファイルに触れるか、コードの変更を探すモニターを使用して、UNIXでデーモンモードを使用している必要があります。埋め込みモードを使用しているときにWindowsで同じように手を加えることができます。 zdmytrivで語ったが、任意の負荷を扱うサイトのこれをしないよう

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

関連する問題