TLDR: 失敗することがある TCP サーバーに自動的に再接続するための再利用可能なコードはありますか?
私はサーバー アプリケーションを作成しています。hal
これは、他のサーバーへの TCP 接続も開きますxbmc
。私は当初、xbmc
失敗したときにxbmc
erlang プロセスが停止し、その後スーパーバイザーによって再起動されるように書いていました。
どうやら、これは erlang で永続的な TCP 接続を行うには良い方法ではありません。まず第一に、これは実際には機能しません。xbmc
失敗すると、プロセスの再起動が速すぎて、スーパーバイザーがプログラム全体をシャットダウンしてしまいhal
ます。第二に、私はこれにスーパーバイザーを使用することは想定されていないようです: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (私が読んだように、このリンクされた質問は「スーパーバイザーはこれを解決しますか?」と答えるだけであり、私の質問の複製ではありません。 )
これはかなり一般的な使用例のように聞こえると思います。ホストがときどきダウンする場合でも、TCP 接続を可能な限り接続したままにします。これを達成するために使用する必要があるOTPまたはその他のライブラリコードはありますか?