如何查看生产中的 delayed_job 个职位?

How do I see delayed_job jobs in production?

我有一个服务器,我在其中使用 capistrano 进行部署,我使用 delayed_jobs 进行一些邮件发送,但由于某种原因在我的服务器上作业没有执行。 delayed_job 进程是 运行(运行 bin/delayed_job status 正确回答我说那里有一个进程,但我不知道进程是否不是执行我的工作,或者即使我的工作没有排队。在本地它一切正常,但在服务器的生产阶段却没有。

我想知道是否有一种方法可以至少检查那里有哪些作业,因为我无法通过访问控制台来做到这一点

好的,所以我通过数据库本身检查了我的工作,我通过 postgres 用户输入 psql 并在 delayed_jobs table 中做了一些查询,你也可以尝试做 RAILS_ENV=production bin/delayed_jobs run(对于 rails 4,rails 3 使用 "script/" 而不是 "bin/")这将向您显示工人在执行工作时正在做什么。

正如 Swards 在上面评论的那样,您还可以使用 gem 为 delayed_jobs 提供网络界面:https://github.com/ejschmitt/delayed_job_web

如果您仍然想知道我发送电子邮件的问题是什么,我已经打开了另一个问题,因为它与这个问题的内容相去甚远:

另一个可以处理延迟作业的 gem 是 delayed-web,您可以在此处找到 https://github.com/tatey/delayed-web

您将其添加到您的gem文件

gem 'delayed-web'

然后 运行

rails generate delayed:web:install

这将在 config/initializers 下生成初始化文件 delayed_web.rb,其中包含以下内容:

Rails.application.config.to_prepare do
  Delayed::Web::Job.backend = 'active_record'
end

并且在 config/application.rb 中,生成器也会为您添加此内容

# config/application.rb
config.assets.enabled = true
config.assets.precompile << 'delayed/web/application.css'

在 routes.rb 中,它也可以添加路由,但如果您使用的是设计,那么您可能只想限制对管理员用户的访问,如下所示:

authenticated :user, -> user { user.admin? } do
  mount Delayed::Web::Engine, at: '/jobs'
end