Rails - 旧的 cron 作业保留 运行,无法删除它
Rails - Old cron job keeps running, can't delete it
所以我正在使用 Rails 并且我有一些 Sidekiq worker,但是 none 已启用。我正在使用 sidekiq-cron
gem,这需要您将文件放入 app/workers/
,在 config/sidekiq_schedule.yml
中配置一个 sidekiq 调度程序,并在 [=18] 中添加几行=].但是,我已经注释掉了 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 界面,我在队列中看不到任何东西,没有任何东西正在处理,忙,重试,入队,什么都没有。
如有任何建议,我们将不胜感激。在过去的一个小时里,我一直在努力寻找它,但没有成功。我什至从 workers 目录中删除了所有 worker,但它仍在尝试启动其中一个。
因为你已经加载了作业,我认为那些作业配置仍在REDIS中。通过使用 redis-cli
:
打开一个新的终端选项卡来检查这个假设
KEYS '*cron*'
如果 REDIS 上有这些键,清除它们将解决您的问题。
既然你在标题中提到了 cron 工作,但在问题中没有,我假设有一个 cronjob 运行 后台 sidekiq 任务。
尝试 运行 crontab - l
在终端中查看所有 cron 作业。如果您看到类似“* * * * *”的内容,则表示每分钟有一项工作 运行。
然后,使用 crontab - r
清除您的 cron 选项卡并删除所有计划任务。
所以我正在使用 Rails 并且我有一些 Sidekiq worker,但是 none 已启用。我正在使用 sidekiq-cron
gem,这需要您将文件放入 app/workers/
,在 config/sidekiq_schedule.yml
中配置一个 sidekiq 调度程序,并在 [=18] 中添加几行=].但是,我已经注释掉了 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 界面,我在队列中看不到任何东西,没有任何东西正在处理,忙,重试,入队,什么都没有。
如有任何建议,我们将不胜感激。在过去的一个小时里,我一直在努力寻找它,但没有成功。我什至从 workers 目录中删除了所有 worker,但它仍在尝试启动其中一个。
因为你已经加载了作业,我认为那些作业配置仍在REDIS中。通过使用 redis-cli
:
KEYS '*cron*'
如果 REDIS 上有这些键,清除它们将解决您的问题。
既然你在标题中提到了 cron 工作,但在问题中没有,我假设有一个 cronjob 运行 后台 sidekiq 任务。
尝试 运行 crontab - l
在终端中查看所有 cron 作业。如果您看到类似“* * * * *”的内容,则表示每分钟有一项工作 运行。
然后,使用 crontab - r
清除您的 cron 选项卡并删除所有计划任务。