自分でそれを理解しようとする多くの欲求不満の後、私はこの手ごわいエラーを追跡するのを手伝ってくれるSOの人たち(あなた!)に手を差し伸べています:
メッセージ: ファイルの終わりに達しました EOFError バックトレース: ["/app/vendor/ruby-1.9.3/lib/ruby/1.9.1/openssl/buffering.rb:174:in `sysread_nonblock
背景: 私のアプリは、Heroku でホストされている Rails 3 アプリであり、100% バックエンド アプリです。Redis/Resque ワーカーを使用して、Chatter REST API を使用して Salesforce から受信したペイロードを処理します。
トラブル: Ruby の HTTPS/OpenSSL での EOF の他の同様のエラーとは異なり、私のエラーは非常にランダムに発生します (これがいつ発生するかまだ予測できないため)。
いつもの疑問: 45 個の Resque ワーカーを作成しようとして、45 個の異なる Salesforce Chatter REST API 接続からのデータを一度に同期しようとすると、エラーが頻繁に発生します。このエラーが原因で、処理が全体の 20% 以上失敗することが非常に頻繁にあります。
対処手順: HTTPS を使用する Databasedotcom gem を使用しており、接続に必要なすべての手順に従って正常な HTTPS 接続を作成します。そう...
- HTTPS で設定された SSL を使用 - チェック済み
- URI エンコード - チェック済み
- Ruby 1.9.3 - チェック済み
- HTTP 読み取りタイムアウトは 900 (15 分) に設定されています
- 各再試行の前に 30 秒スリープした後、この EOF エラーを最大 30 回再試行します。それでも、一部のデータは失敗します。
ここで何か助けてください。