1

我有两个名为task "sqs:listen_converted"和的任务task "sqs:listen_failed"

第一个监听转换后的文件并在 postgres 中为其创建记录。

第二个在文件记录中设置一个标志,表示转换失败。

这些任务必须永远监听一个 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中,我可以让这两个进程运行执行命令:

ps:scale sqs_converted=1 sqs_failed=1

不幸的是,这样做我将不得不为每个支付 36 美元。

如何让它在后台 heroku 上的单个测功机上运行?

也许通过heroku-api gem运行分离的耙子进程?

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