Luc*_*cas 5 ruby-on-rails heroku amazon-sqs amazon-web-services
我很困惑,我应该在哪里有一个脚本轮询Rails应用程序内的Aws Sqs.
如果我在Web应用程序中使用一个线程,它可能会使用cpu周期来永远监听此队列,然后影响性能.
如果我保留一个单独的heroku工作者dyno,它每月花费34.50美元.为单个队列调查支付这个价格是否有意义?或者不是使用工人的情况?
脚本代码:
它的作用:听取转换后的pdf文件.获取响应并将对象创建到postgres数据库中.
queue = AWS::SQS::Queue.new(SQSADDR['my_queue'])
queue.poll do |msg|
...
id = received_message['document_id']
@document = Document.find(id)
@document.converted_at = Time.now
...
end
Run Code Online (Sandbox Code Playgroud)
我需要帮助!!谢谢
您有三个基本选择:
fork使用子进程来进行后台处理。无论发生什么,请记住 dyno 消耗的 RAM 为 512 MB 限制,并且由于我假设您只有一个 Web dyno,因此请注意dyno 空闲意味着您的应用程序可能无法 24x7 运行。此外,这个选项的味道很糟糕,因为它通常违背了12-factor 应用程序的精神。rake handle_sqs处理队列并在队列为空时退出的任务。Heroku Scheduler是理想的选择:让它每 20 分钟运行一次或类似的时间。只要一次性测功机运行,您就需要为其付费,但由于如果队列为空,这只持续几秒钟,因此它的成本比永远在线的工作人员要低。或者,您的 Web 应用程序可以使用 Heroku API 启动一次性进程,以编程方式运行等效的heroku run rake handle_sqs.| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |