開発マシンで Lighttpd + FastCGI + Django を使用しています。manage.py のコマンド ライン オプションを使用して FastCGI サーバーを起動します。
問題は、私が頻繁にソースを変更することであり、"./manage.py runserver" と同じように、FastCGI にそれらの変更を自動的に反映させる必要があります。
おそらく、そのためのコマンドラインオプション、またはその他のソリューションはありますか?
監視を行うmanage.pyのrunserver部分のコードを見ましたか? そのコードをカスタムの manage.py スクリプトにコピー アンド ペーストし、変更が検出されたときに軽い再起動コマンドを実行するように設定できない理由はありません。
別の方法として、pyinotify のようなパッケージを使用して再起動を行う別の python プログラムを実行することもできます。
誰かがこれを機能させたことがあるかどうか疑問に思っていますか?django の autoreload.py を使用してリロード メカニズムを実装しようとしましたが、残念ながら、フォークが発生すると次のようなエラーが発生します。
django/core/servers/fastcgi.py"、180 行目、runfastcgi WSGIServer(WSGIHandler(), **wsgi_opts).run() ファイル "build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/ server/fcgi_fork.py」、140行目、実行ファイル「build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py」、119行目、実行ファイル「build/bdist.py」 freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py"、450 行目、_installSignalHandlers ValueError: シグナルはメイン スレッドでのみ機能します
私の理想的なセットアップは、django が内部サーバーでこれを行うのと同様に、コードの変更が検出されるたびに fcgi プロセスをリロード/強制終了し、新しいプロセスを開始できるようにすることです。また、このエラーを乗り越える autoreload.py からスレッドを削除しようとしましたが、サーバーを適切に実行していないようです (まだ調査中です)。
おそらく誰かがdjangoのsettings.pyファイルでCherryPies autoreload.pyを試しましたか?