我为Sidekiq构建了一个简单的测试作业,并将其添加到Sidekiq Cron的schedule.yml
文件中。
这是我的测试工作:
module Slack
class TestJob < ApplicationJob
queue_as :default
def perform(*args)
begin
SLACK_NOTIFIER.post(attachments: {"pretext": "test", "text": "hello"})
rescue Exception => error
puts error
end
end
end
end
[SLACK_NOTIFIER
这是我在启动时初始化的用于Slack的简单API客户端。
在我的schedule.yml
中:
test_job:
cron: "* * * * *"
class: "Slack::TestJob"
queue: default
description: "Test"
所以我想让它每分钟运行一次,并且完全按照我的预期工作。
但是,我现在已经删除了作业文件,并从schedule.yml
中删除了该作业,它仍然尝试每分钟运行一次作业。我已经进入了sidekiq仪表板,并且看到大量重试该工作的信息。无论我杀死了他们多少次,它们都会不断地出现。
我已经尝试多次关闭redis服务器和sidekiq。我尝试关闭计算机(当然,在杀死服务器之后)。它仍然会继续安排这些作业,并且会中断我的其他作业,因为它会引发以下异常:
NameError: uninitialized constant Slack::TestJob
我已经在项目范围内搜索“ TestJob”,但没有结果。
我只用大约10分钟的时间就打开了Redis服务器并完成了这项工作...
redis数据库中是否可能存在某些问题?我研究了redis-cli
文档,但我认为没有任何帮助。
尝试在redis客户端中调用$ FLUSHALL
...
除此之外...
sidekiq-cron documentation似乎希望您明确检查schedule.yml
的存在...
#initializers/sidekiq.rb
schedule_file = "config/schedule.yml"
if File.exist?(schedule_file) && Sidekiq.server?
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end