用Resque扩展您的Rails应用程序:一种实用方法
#网络开发人员 #编程 #redis #rails

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界面中,您可以查看队列的状态,搜索特定作业。