我正在尝试向我的rails应用程序添加几个计划的工作人员。这些工作者将在给定的间隔内爬行不同的站点。
我想测试这些工人,但做不到。我正在启动redis和我的应用程序。我应该怎么做才能查看我的计划作业是否正在工作?
下面是我的爬虫类:
class AyedasCrawler
include Sidekiq::Worker我的sidekiq.yml是:
:schedule:
ayedas_crawler:
cron: '0 * * * * *' # Runs once per minute
class: AyedasCrawler发布于 2018-08-01 22:29:59
通过从command-line.
bundle exec sidekiq或sidekiq,sidekiq
1. In your routes.rb file, just below the `require 'sidekiq/web'`, add `require 'sidekiq-scheduler/web'`
2. In your config.ru, just below the `require 'sidekiq/web'`, add
require 'sidekiq-scheduler/web' run Sidekiq::Web
在浏览器上,转到==> http://localhost:{port}/sidekiq/recurring-jobs。其中{port}是运行应用程序的端口。
您将看到应用程序的计划作业列表以及有关该应用程序的其他一些详细信息。
在官方documentation中阅读更多内容
发布于 2018-07-20 20:51:36
您还需要运行Sidekiq进程。
bundle exec sidekiq
它将同时启动工作进程和调度程序
发布于 2021-05-13 16:49:38
如果您希望使用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是否正确。它将测试NOT CRON语法和预定的时间间隔。
我还使用https://github.com/philostler/rspec-sidekiq来允许在没有实际执行作业的情况下进行sidekiq测试。
https://stackoverflow.com/questions/47623296
复制相似问题