ソケット接続をリッスンし、リクエストに応じてさまざまな種類のアクションを実行するサーバーがあります。それらの 1 つは、サーバーが fork する長期データベース クエリです。
サーバーはすべてのアクティブな子のログを保持し、シャットダウンを要求されるたびに、終了する前にすべての子を殺します。サーバーがクラッシュしたり、不当に強制終了されたりして、子プロセスが孤立するという状況に数回遭遇しました。サーバーを再び元に戻そうとすると、そのアドレス/ポートが既にバインドされているため、リッスンしているソケットがバインドできないと言って拒否します。
I am looking for a way to improve this kind of situation, so that the main server process can come back right away. I've tried monitoring the parent existance from the child and exiting as soon at is gone, but this has only resulted in having zombie processes and the socket seems to still be bound.
The server is written in Python, but any explanation or suggestion in any language is welcome.