【发布时间】:2020-01-25 03:45:48
【问题描述】:
我为 Sidekiq 构建了一个简单的测试作业,并将其添加到我的 schedule.yml 文件中用于 Sidekiq Cron。
这是我的测试工作:
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”,但没有得到任何结果。
我只用这个作业打开了 redis 服务器大约 10 分钟...
redis 数据库中是否有一些东西挥之不去?我查看了redis-cli 文档,但我认为它对我没有任何帮助。
【问题讨论】:
标签: ruby-on-rails redis cron sidekiq sidekiq-cron