【发布时间】:2013-07-28 08:08:21
【问题描述】:
我没有专门向我的 Rails 应用程序添加任何后台任务。该应用程序将发送电子邮件并调整图像大小。但我的应用程序中没有包含任何后台进程,如delayed_jobs 或Resque。暂时我不会添加后台进程。那么我需要一个工人测功机吗?
如果我添加一个worker dyno,这些任务会由worker dyno 自动处理吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 heroku
我没有专门向我的 Rails 应用程序添加任何后台任务。该应用程序将发送电子邮件并调整图像大小。但我的应用程序中没有包含任何后台进程,如delayed_jobs 或Resque。暂时我不会添加后台进程。那么我需要一个工人测功机吗?
如果我添加一个worker dyno,这些任务会由worker dyno 自动处理吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 heroku
魔法不会发生任何事情!除非您添加 delayed_job 或其他 gem 用于在后台处理任务并明确编写应该在后台执行的代码 - 它不会。
在发送电子邮件和调整图像大小时,鼓励使用后台工作人员来完成这些任务,但这不是必须的。只要您没有看到请求超时,就应该没问题。
如果您决定在未来使用delayed_job,请查看workless gem - 它会在需要时自动缩放工作测功机,然后将其缩放回零。我在我的项目中使用它,这节省了我不少钱。
【讨论】:
如果您没有运行后台进程,那么没有工作人员测功机应该没问题。
但这也取决于您的正常流程。如果您的进程需要很长的请求时间(例如,您的图像调整大小可能就是这种情况),将其打包到后台任务中可能会很有用。
可以在Heroku website 上找到很好的解释:
https://devcenter.heroku.com/articles/background-jobs-queueing
当然,Heroku 的美妙之处在于它的可扩展性……因此,如果您发现您的任务需要很长的响应时间,您可以随时添加工作人员测功机,然后将任务更改为后台任务。
【讨论】: