最後に、開発環境を runserver から gunicorn/nginx に移行しました。
ソースが変更されたときにサーバーが自動的に再起動するように、runserver の autoreload 機能を gunicorn に複製すると便利です。それ以外の場合は、サーバーを手動で再起動する必要がありkill -HUP
ます。
手動再起動を回避する方法はありますか?
これは古い質問ですが、バージョン 19.0 からオプションがあることを知っておく必要がgunicorn
あり--reload
ます。そのため、サードパーティのツールは必要ありません。
1 つのオプションは、--max-requests--max-requests 1
を使用して、起動オプションに追加することにより、生成された各プロセスが 1 つの要求のみを処理するように制限することです。新しく生成されたすべてのプロセスは、コードの変更を確認する必要があり、開発環境では、リクエストごとの余分な起動時間は無視できるはずです。
Bryan Helmigrun_gunicorn
がこれを思いついたので、直接起動する代わりに使用するように変更しました。これによりgunicorn
、これら 3 つのコマンドを django プロジェクトのルート フォルダー (virtualenv を有効にした状態) のシェルにカット アンド ペーストするだけで済みます。
pip install watchdog -U
watchmedo shell-command --patterns="*.py;*.html;*.css;*.js" --recursive --command='echo "${watch_src_path}" && kill -HUP `cat gunicorn.pid`' . &
python manage.py run_gunicorn 127.0.0.1:80 --pid=gunicorn.pid