我正在尝试将几个预定的工作人员添加到我的rails应用程序中。这些工作人员将按给定的时间间隔爬行不同的站点。
我想测试这些工人但不能这样做。我正在启动redis和我的应用程序。我该怎么做才能看到我的预定工作是否有效?
这是我的抓取工具类:
class AyedasCrawler
include Sidekiq::Worker
和我的sidekiq.yml是:
:schedule:
ayedas_crawler:
cron: '0 * * * * *' # Runs once per minute
class: AyedasCrawler
答案 0 :(得分:0)
您还需要运行Sidekiq进程。
bundle exec sidekiq
它将同时启动工作程序和调度程序
答案 1 :(得分:0)
通过运行来启动sidekiq worker和调度程序进程
在命令行中从应用程序根目录bundle exec sidekiq
或sidekiq
。
sidekiq-scheduler提供了对Sidekiq Web界面的扩展,该界面添加了“周期性作业”页面。 有两种方法可以做到这一点:
require 'sidekiq/web'
下方,添加require 'sidekiq-scheduler/web'
require 'sidekiq/web'
下方,添加
require 'sidekiq-scheduler/web'
run Sidekiq::Web
在浏览器上,转到==> http://localhost:{port}/sidekiq/recurring-jobs
。 {port}
是应用程序运行所在的端口。
您将看到为您的应用程序安排的作业的列表以及有关它的其他一些详细信息。
中了解更多信息答案 2 :(得分:0)
如果您想使用 rspec 对其进行测试,您可以执行以下操作:
it 'spawns scheduled workers' do
Sidekiq::Cron::Job.load_from_hash YAML.load_file('config/sidekiq.yml')[: schedule]
Sidekiq::Cron::Job.all.each(&:enque!)
expect(AyedasCrawler.jobs.size).to be(1)
end
它加载 YAML 配置,将所有作业入队,并断言作业是否已入队。
使用此方法,您可以验证您的计划 YAML 是否正确。它将不测试 CRON 语法和预定间隔。
我还使用 https://github.com/philostler/rspec-sidekiq 来允许在不实际执行作业的情况下进行 sidekiq 测试。