本番用に Pyro アプリケーションを強化しようとしています。ネームサーバーで次の問題が発生しています。
ネーム サーバーをオフにしてすぐにオンに戻すと、50% の確率で次のエラーがスローされるようです。
socket.error: [Errno 98] Address already in use
pyro4-ns
これは、ネーム サーバーをウィンドウ ( ) で実行し、CTRL+C を押してから再度実行することでテストできます。これを 10 回続けて問題なく実行できる場合もありますが、次の 10 回ではsocket.error
. このエラーが発生した場合、ネーム サーバーがソケットを解放するのに約 30 秒かかることがわかりました。
私はsupervisord
パイロを制御するために使用しています。次の構成により、いくつかの問題が改善されることがわかりました。特に、startretries=50
NameServer がソケットを解放するには、常に 30 秒以上かかります。これにより、プロセスが何らかの理由でsupervisord
終了した場合でも、失敗することなく開始できます。
[program:pyro-ns]
command=pyro4-ns
priority=1
startretries=50
autostart=true
autorestart=true
ただし、クライアントの実行中にネーム サーバーが停止した場合、この問題が原因でネーム サーバーに再接続するのに 30 秒以上かかります。REST タスク用の Web サーバーで Pyro クライアントを使用しているため、この遅延は受け入れられません。