1

restforceを使用して salesforce に API リクエストを行うアプリケーションがあります。

具体的には、アプリケーションは連絡先オブジェクトを見つけ、すべての関連オブジェクトの ID を返し、ID に基づいてすべての関連オブジェクトの完全なレコードを取得します。

これには、次の 2 つの理由で長い時間がかかります。

  1. 外部 API には多くのリクエストがあり、通常、それぞれが応答するのに数分の一の時間がかかり、場合によっては +500 の個別のリクエストが発生する可能性があります。
  2. 多くの場合、各リクエストによって大量のデータが引き戻されます。

現在、すべてのリクエストは Salesforce REST API の制限内にありますが、これらのリクエストの一部が処理されるまでに 5 分以上かかることがあるため、開発サーバーからタイムアウト エラーが発生しています。

Rails 4.2 - これを処理するにはどうすればよいですか?

私の質問は、レールにこれを処理させるにはどうすればよいですか?

API リクエストは、コントローラー (スキニー コントローラーに違反していることは間違いありません) から、またはビュー (危険なハックのように見えるヘルパー メソッド経由) から起動できます。

理想的には、バックグラウンド ジョブで実行したいのですが、ヘルパー メソッドを含めることができるのと同じ方法で、すべての認証とその他のメソッドをジョブに含めることができるかどうかわかりません。

バックグラウンド ジョブで動作させることができたとしても、ユーザー エクスペリエンスのベスト プラクティスが何であるかはわかりません。理想的には、プログレスバーを使用して「ハングアップ、コーヒーを飲みに行く」ように指示するページにルーティングし、リクエストが完了したら最終ページに自動ルーティングしたいと思います...

しかし、ジョブが完了するまで一時的な表示を生成する方法がわかりません。

この問題を消化するのに役立つ可能性のある宝石や戦略を誰かに勧めてもらえますか?

4

1 に答える 1

1

これには必ずバックグラウンド ジョブを使用する必要があります。

データベースオブジェクトをジョブに与えます。これは、終了したことを知らせるために更新され、場合によっては進行状況を示すために時々更新されます。

ユーザー側では、バックグラウンド ジョブが動作していることを伝え、最終的に進行状況インジケーターを表示し、ジョブに渡すデータベース オブジェクトが準備が整ったことを通知したら、結果を表示します。

于 2015-04-19T01:42:27.753 に答える