1

と という名前の 2 つのタスクがtask "sqs:listen_converted"ありtask "sqs:listen_failed"ます。

最初のものは、変換されたファイルをリッスンし、postgres にレコードを作成します。

2 つ目は、変換が失敗したことを示すフラグをファイル レコードに設定します。

これらのタスクは、SQS キューを永久にリッスンし、それに発行されたメッセージを読み取る必要があります。簡単な方法でのコードは次のとおりです。

  task "sqs:listen_converted" => :environment do
      queue = AWS::SQS::Queue.new(SQSADDR['converted'])

      queue.poll do |msg|
      begin
         ...
      end
  end

  task "sqs:listen_failed" => :environment do
      queue = AWS::SQS::Queue.new(SQSADDR['failed'])

      queue.poll do |msg|
      begin
         ...
      end
  end

Heroku では、次の 2 つのプロセスを実行してコマンドを実行できます。

ps:scale sqs_converted=1 sqs_failed=1

残念ながら、この方法では、1 つにつき 36 ドルを支払う必要があります。

バックグラウンドでherokuの単一のdynoで実行するにはどうすればよいですか?

heroku-api gem を介して分離された rakes プロセスを実行している可能性がありますか?

heroku = Heroku::API.new(:api_key => 'api_key')
heroku.post_ps('myapp', "rake sqs:listen_converted", { :attach => false })
heroku.post_ps('myapp', "rake sqs:listen_failed", { :attach => false })

ありがとう!

4

0 に答える 0