如何删除 Sidekiq Enterprise 定期作业?
How to delete Sidekiq Enterprise periodic jobs?
Sidekiq Enterprise 包括对 Periodic Jobs 的支持,并包括使用初始化程序注册作业的示例:
Sidekiq.configure_server do |config|
config.periodic do |mgr|
# see any crontab reference for the first argument
# e.g. http://www.adminschoice.com/crontab-quick-reference
mgr.register('0 * * * *', SomeHourlyWorkerClass)
mgr.register('* * * * *', SomeWorkerClass, retry: 2, queue: 'foo')
mgr.register(cron_expression, worker_class, job_options={})
end
end
报名后,如何delete/unregister找工作?例如,如果 worker 不再使用并且不应该再 运行 你如何安全地从 Redis 中删除注册的工作?从初始化程序中删除它并重新启动 Sidekiq 不会这样做,并且 API 似乎没有提供删除,而是说 The Periodic API 允许您列出已注册的定期作业并查看入队历史.
有一个 API 用于删除常规队列中的作业:
queue = Sidekiq::Queue.new("mailer")
queue.each do |job|
job.klass # => 'MyWorker'
job.args # => [1, 2, 3]
job.delete if job.jid == 'abcdef1234567890'
end
但正在尝试将此调整为定期作业 API:
Sidekiq::Periodic::LoopSet.new.each do |lop|
lop.delete
end
...引发错误:
NoMethodError: undefined method `delete' for #<Sidekiq::Periodic::Loop:0x007fff0a48dbe8>
Redis 数据库显示 Sidekiq 为每个循环创建了一个 loop-uniqueid
键,以及一个 loop-history-uniqueid
键和 loops-uniqueid
键。我应该销毁所有这些密钥吗?最好销毁所有这些密钥,然后重新注册所有当前作业吗?
Sidekiq Enterprise 领导角色由辅助服务器担任。担任领导角色后,定期作业将被锁定且无法修改。关闭所有 Sidekiq 服务器,包括领导者,然后重新启动 Sidekiq 以从初始化程序中清除并重新注册所有作业。
无需使用 API 删除定期作业。
就运行这个:
Sidekiq::Cron::Job.destroy_all!
所述
Sidekiq Enterprise 包括对 Periodic Jobs 的支持,并包括使用初始化程序注册作业的示例:
Sidekiq.configure_server do |config|
config.periodic do |mgr|
# see any crontab reference for the first argument
# e.g. http://www.adminschoice.com/crontab-quick-reference
mgr.register('0 * * * *', SomeHourlyWorkerClass)
mgr.register('* * * * *', SomeWorkerClass, retry: 2, queue: 'foo')
mgr.register(cron_expression, worker_class, job_options={})
end
end
报名后,如何delete/unregister找工作?例如,如果 worker 不再使用并且不应该再 运行 你如何安全地从 Redis 中删除注册的工作?从初始化程序中删除它并重新启动 Sidekiq 不会这样做,并且 API 似乎没有提供删除,而是说 The Periodic API 允许您列出已注册的定期作业并查看入队历史.
有一个 API 用于删除常规队列中的作业:
queue = Sidekiq::Queue.new("mailer")
queue.each do |job|
job.klass # => 'MyWorker'
job.args # => [1, 2, 3]
job.delete if job.jid == 'abcdef1234567890'
end
但正在尝试将此调整为定期作业 API:
Sidekiq::Periodic::LoopSet.new.each do |lop|
lop.delete
end
...引发错误:
NoMethodError: undefined method `delete' for #<Sidekiq::Periodic::Loop:0x007fff0a48dbe8>
Redis 数据库显示 Sidekiq 为每个循环创建了一个 loop-uniqueid
键,以及一个 loop-history-uniqueid
键和 loops-uniqueid
键。我应该销毁所有这些密钥吗?最好销毁所有这些密钥,然后重新注册所有当前作业吗?
Sidekiq Enterprise 领导角色由辅助服务器担任。担任领导角色后,定期作业将被锁定且无法修改。关闭所有 Sidekiq 服务器,包括领导者,然后重新启动 Sidekiq 以从初始化程序中清除并重新注册所有作业。
无需使用 API 删除定期作业。
就运行这个:
Sidekiq::Cron::Job.destroy_all!
所述