Rails - 旧的cron作业一直在运行,无法删除它

时间:2018-01-19 02:58:49

标签: ruby-on-rails ruby cron sidekiq

所以我使用Rails并且我有一些Sidekiq工作者,但 none 已启用。我正在使用sidekiq-cron gem,它要求您将文件放在app/workers/中,在config/sidekiq_schedule.yml中配置sidekiq调度程序,并在config/initializers/sidekiq.rb中添加几行。不过,我已对sidekiq_schedule.yml中的所有内容进行了评论,并评论了sidekiq.rb中的以下几行:

# Sidekiq scheduler.
# schedule_file = 'config/sidekiq_schedule.yml'

# if File.exists?(schedule_file) && Sidekiq.server?
#   Sidekiq::Cron::Job.load_from_hash! YAML.load_file(schedule_file)
# end

但是,如果我每分钟启动Sidekiq(这是旧的时间表),我会在提示中看到这一点:

2018-01-19T02:54:04.156Z 22197 TID-ovsidcme8 ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper JID-8609429b89db2a91793509ea INFO: start
2018-01-19T02:54:04.164Z 22197 TID-ovsidcme8 ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper JID-8609429b89db2a91793509ea INFO: fail: 0.008 sec

它失败了,因为它试图启动代码不应该启动的作业。

我已经去了rails控制台提示符(rails -c)并试图找到工作,但没有任何内容:

irb(main):001:0> Sidekiq::Cron::Job.all
=> []

所以我不太清楚为什么它会不断尝试创造一份工作。如果我转到我的应用程序上的rails界面,我看不到队列中的任何内容,没有任何处理,忙碌,重试,入队,没有。

任何建议都将不胜感激。我一直试图像过去一小时那样追捕它并且没有成功。我甚至从工作目录中删除了所有工作人员,但它仍然试图启动其中一个。

2 个答案:

答案 0 :(得分:0)

因为您已经加载了作业,我认为这些作业配置仍然在REDIS中。使用redis-cli检查此假设:

KEYS '*cron*'

如果REDIS上有这些键,清除它们将解决您的问题。

答案 1 :(得分:0)

由于您在标题中提到了 cron 作业但未在问题中提及,我假设有一个运行背景sidekiq任务的cronjob。

尝试在终端中运行crontab - l以查看所有cron作业。如果你看到像“* * * * *”这样的东西,那就意味着每分钟都有一份工作。

然后,使用crontab - r清除您的cron标签并删除所有计划任务。