0

これが私のコードです

  users = User.all

  # Latency issues with connecting with Heroku and MC
  Gibbon::API.timeout = 120

  gb = Gibbon::API.new
  batch = []
  users.each do |user|
    batch << user.mail_chimp_information
  end

  puts gb.lists.batchSubscribe(id: "MC_ID_HERE", batch: batch, double_optin: false, update_existing: true)

上記のコードは、ユーザーを私の MailChimp アカウントに一括登録 (または既存の更新) する夜間の cron で実行するように設定されています。私のアプリは Heroku で実行されているため、ユーザーを取得し、MailChimp に送信する前にユーザーをループ処理する際に問題が発生します。この行を削除するとGibbon::API.timeout = 120、デフォルトは 15 秒でタイムアウトになります。

外部 API へのユーザー情報のバッチ アップロードに関するベスト プラクティスは何ですか? タイムアウトを手動で設定することは、今のところ簡単な修正ですが、ユーザーベースが拡大するにつれて、タイムアウトが再び発生する可能性が高くなります.

4

1 に答える 1

0

ベスト プラクティスは、遅延ジョブを使用して作業を行うことです。

アイデアは、各ジョブを (多数ではなく) 1 回限りの遅延ジョブとしてセットアップし、サブスクライブを処理するバックグラウンド キューを用意するというものです。

一般的な宝石は次のとおりです。

于 2014-01-06T02:50:36.193 に答える