由于您正在寻找后台处理库,很多人推荐resque 和sidekiq。你可以在at this sitepoint tutorial 上找到一篇比较延迟作业和其他两个的好文章(我不知道那一篇所以在这里不做评论),你可以看到这两个in this stack overflow answer 的一个很好的比较。
要考虑的主要问题之一是您希望在后台进程中运行的代码是否安全?如果它不坚持使用 resque(我认为无论如何它更简单,见仁见智),因为 sidekiq 运行并行作业(我相信你可以选择不这样做)。
示例代码:Redis(来自文档):
要定义一些工作,就做一个工作。工作需要工作方法:
class ImageConversionJob
def work
# convert some kind of image here
end
end
接下来,我们需要拖延!让我们把你的工作放在队列中:
resque = Resque.new
resque << ImageConversionJob.new
整洁!这个工作单元将存储在 Redis 中。我们可以启动一个工作人员从队列中获取一些工作并完成工作:
bin/resque work
Sidekiq(来自链接的站点文章):
class PrintWorker
include Sidekiq::Worker
def perform(str)
puts str
end
end
再一次,我们必须在某处排队作业(我们将在索引控制器中完成):
class IndexController < ApplicationController
def index
PrintWorker.perform_async(params[:to_print])
end
end
最后,我们必须启动 Sidekiq 进程。在 Rails 应用程序根目录的 shell 中输入:
bundle exec sidekiq
这只是一个简短的概要和足够的语法来获得答案的味道。有关更多详细信息,请参阅链接文章。