Resque是一个功能强大且受欢迎的Redis支持的库,用于创建背景作业,将这些作业放在多个队列上并稍后对其进行处理。它被广泛用于Ruby在Rails应用程序上,以异步执行任务,并将重载的重载处理到背景上。在本文中,我们将探讨如何在Ruby上使用Resque在Rauds上,从安装和设置到创建作业和处理它们。
安装和设置
要在Ruby在Rails应用程序中使用Resque,您首先需要安装宝石。您可以通过将以下行添加到您的Gemfile:
来做到这一点
gem 'resque'
然后,运行束安装以安装宝石及其依赖项。安装了宝石后,您需要配置Resque以将Redis用作其后端。您可以通过创建一个初始化文件config/initializers/resque.rb
并添加以下行来执行此操作:
Resque.redis = Redis.new(url: ENV['REDIS_URL'])
确保用Redis服务器的URL替换ENV['REDIS_URL']
。您还可以通过将其他选项传递给redis.new方法来自定义REDIS连接设置。
创造工作
设置了Resque后,您可以开始创建背景作业。作业只是定义性能方法的Ruby类。例如,让我们创建一个发送电子邮件的作业:
class SendEmailJob
@queue = :email
def self.perform(to, subject, body)
# send email here
end
end
在此示例中,我们定义了一个包括表演方法的SendEmailJob
类,该方法采用了三个参数:对,主体和身体。我们还将@queue
实例变量设置为:电子邮件,这表明该作业应放在电子邮件队列上。
要加入这项工作,您可以调用Resque.enqueue
方法并通过工作类及其参数:
Resque.enqueue(SendEmailJob, 'user@example.com', 'Hello', 'World')
这将把作业添加到电子邮件队列中,可以稍后处理。
处理工作
要在后台处理作业,您需要运行一个重新的工人。工人是一个过程,可以听取一个或多个队列并处理工作时的工作。您可以通过运行以下命令来启动一个工人:
$ QUEUE=* rake resque:workers
这将启动一个倾听所有队列(*)的工人。您还可以通过逗号分隔特定的队列:
$ QUEUE=email,logs rake resque:workers
工人运行后,它将从指定的队列中处理作业。如果作业失败,Resque将自动重试(默认情况下为5次),然后放弃并将其移至失败的队列。
监视和管理
Resque提供了一个Web界面,可让您监视队列状态,查看处理和失败的作业以及执行管理任务。要启用Web界面,您需要将以下行添加到config/routes.rb
文件:
mount Resque::Server.new, at: '/resque'
这将安装 /resque的Resque Web界面。然后,您可以通过在Web浏览器中访问http://localhost:3000/resque
访问界面(假设您的Rails应用程序在端口3000上运行)。
在Resque Web界面中,您可以查看队列的状态,搜索特定作业。