我需要实现一些后台处理,1)发送电子邮件,2)做一些API调用。而且,无论我使用什么系统,我还将与某种cron调度程序(只要有可能)结合使用。我很好奇,我认识到有一系列非常酷的后台处理宝石(延迟工作,Sidekiq,Resque),但我也明白你可以根据Ryan Bate的视频只用rake任务进行后台处理:{{3} }。
使用gem和rake任务进行后台处理有什么利弊?后者关于我的一件事是你必须每次都要开辟一个新的环境调用rake任务,这在内存上非常昂贵。
请注意,我不需要比较宝石。这个系列在这里做得很好: http://railscasts.com/episodes/127-rake-in-background
答案 0 :(得分:5)
并行。您可以让N名工作人员并行发送电子邮件。使用rake你有一个单独的线程,发送许多电子邮件将需要一段时间。
答案 1 :(得分:2)
对我而言,另一个巨大的差异就是背景中的rake任务使用相同的Heroku dyno,但是其他附加组件要求你有一个单独的工作dyno。
编辑,如果有人在谷歌搜索,只是了解到在Sidekiq你可以使用相同的工作人员dyno,请参阅本教程:https://coderwall.com/p/fprnhg答案 2 :(得分:1)
另一个很大的不同可能是像sidekiq这样的宝石可以让你处理后台工作的工具。
例如,如果您需要处理预定的后台作业,比如每天读取多个CSV文件,您可能需要处理或至少查看该处理的结果,读取指标,在发生故障时重试,等等 我想你必须自己用rake任务写出来。
在我的情况下(我在这里使用谷歌搜索),我需要一个非常简单而且不那么繁重的任务来完成预定和异步,所以我要执行rake任务并且我自己保存完成安装,配置和维护像sidekiq这样的gem(很容易),它依赖于服务器。