我有两个名为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 })
谢谢!