gpt4 book ai didi

ruby-on-rails - Sidekiq/Redis 对不存在的作业进行排队

转载 作者:行者123 更新时间:2023-12-01 22:12:22 24 4
gpt4 key购买 nike

我为 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”,但没有得到任何结果。

我只用这个作业打开了 redis 服务器大约 10 分钟...

redis 数据库中是否有残留的东西?我查看了 redis-cli 文档,但我认为其中没有任何帮助。

最佳答案

尝试在redis cli中调用$ 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

关于ruby-on-rails - Sidekiq/Redis 对不存在的作业进行排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com