私がちょうど考えたこと:
Django サイトのビュー コードを書いていて、間違いを犯して無限ループを作成したとします。
誰かがビューにアクセスしようとするたびに、リクエストに割り当てられたワーカー (Gevent ワーカーまたは Python スレッド) は無期限にループに留まります。
私の理解が正しければ、サーバーは 30 秒後にクライアントにタイムアウト エラーを送信します。しかし、Python ワーカーはどうなるでしょうか? 無期限に稼働し続けますか?それは危険ですね!
10 個のワーカーを割り当てたサーバーがあるとします。私はそれを実行させ、ある時点で、クライアントが無限ループでビューにアクセスしようとしました。ワーカーが割り当てられ、次のサーバーの再起動まで事実上停止します。危険なのは、最初は気付かないことです。なぜなら、10 人ではなく 9 人のワーカーがいると、サイトがいつの間にか遅くなるからです。サイトは次第に遅くなり、最終的には 1 つのワーカーだけで非常に遅くなります。
サーバーを再起動すれば問題は解決しますが、サイトの機能がサーバーの再起動に依存するのは嫌です。
これは実際に発生する問題ですか?それを回避する方法はありますか?
更新:無限ループに陥っているスレッド/ワーカーのスタックトレースを取得する方法も本当にありがたいので、それをメールで送信して問題を認識できるようにします。(例外が発生していないため、これを行う方法がわかりません。)
「無限ループを含むコードを書くのは避ける」という趣旨のことを言っている人々への更新: 明らかでない場合のために、私は自分の自由時間を故意に自分のコードに無限ループを入れることはしません。これらのことが起こった場合、それは間違いであり、間違いを最小限に抑えることはできますが、完全に回避することはできません. 間違いを犯した場合でも、通知して問題を修正できるセーフティネットがあることを知りたい.