我正在使用Rails5。我想使用默认队列创建一个在本地运行的sidekiq进程。我的工人班级大致如下所示]
module Accounting::Workers
class FileGenerationWorker
include Sidekiq::Worker
def perform
print "starting work ...\n"
...
我已经这样设置了config / sidekiq.yml文件,希望每天在特定时间(上午11:05)运行工作程序...
:concurrency: 20
:queues:
- default
...
:schedule:
Accounting::Workers::FileGenerationWorker:
cron: "0 5 11 * *"
queue: default
但是,当我启动我的rails服务器(“ rails s”)时,我看不到我的打印语句输出到控制台或执行的任何工作,这告诉我我的工人不在运行。为了使该工作人员在本地正确安排,我还缺少什么?
使用]运行工人>
bundle exec sidekiq
您可能需要提供工作程序模块的路径。例如,
bundle exec sidekiq -r ./worker.rb
Sidekiq本身不支持
:schedule:
中的Sidekiq configuration file映射条目。
Periodic job功能在诸如sidekiq-scheduler之类的扩展中提供。
您需要使用在extended Sidekiq
module中提供的Sidekiq
中声明的类。例如,
./ worker.rb
sidekiq-scheduler
../ app / workers / accounting.rb
require 'sidekiq-scheduler'
require './app/workers/accounting'
Sidekiq.configure_client do |config|
config.redis = {db: 1}
end
Sidekiq.configure_server do |config|
config.redis = {db: 1}
end