Ruby on rails Sidekiq作业存储对类常量的引用,还有什么?轨道
假设我有一份工作在单独的线程中启动,如下所示:Ruby on rails Sidekiq作业存储对类常量的引用,还有什么?轨道,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,假设我有一份工作在单独的线程中启动,如下所示: TaxCalculator.perform_async({ user_id: user.id, description: 'test description', count: 1 }) 假设实际的类类似于: class TaxCalculator def perform(args) user = User.find(args['user_id']) description = args['description']
TaxCalculator.perform_async({ user_id: user.id, description: 'test description', count: 1 })
假设实际的类类似于:
class TaxCalculator
def perform(args)
user = User.find(args['user_id'])
description = args['description']
#some stuff goes on here
end
end
比如说排队很长。有些事情会发生,可能会进行代码更改和部署。当作业最终启动时,需要哪些引用。如果类名更改为其他名称,如
Namespace::TaxCalculator
,作业会失败吗?什么样的推荐人还在Sidekiq工作?争论?身份证?类的名称?随着结构的更改,您可以使用旧常量作为指向新常量的链接,例如:
TaxCalculator=Namespace::TaxCalculator
。。。在下一次更新中,您可以删除此链接,因为所有作业都已完成。随着结构的更改,您可以使用旧常量作为新的链接,例如:
TaxCalculator=Namespace::TaxCalculator
。。。在下一次更新中,您可以删除此链接,因为所有作业都已完成。典型的建议是将SIGUSR1发送到Sidekiq守护程序,告诉它停止接受新工作,让它完成队列中所有作业的运行,使用这些类型的更改重新部署代码,发送SIGTERM以杀死守护程序,然后重新启动它。典型的建议是将SIGUSR1发送到Sidekiq守护进程,告诉它停止接受新工作,让它完成队列中的所有作业,使用这些类型的更改重新部署代码,发送SIGTERM以杀死守护进程,然后重新启动它。确切地说,Sidekiq存储类名,因此如果您更改它,您需要保留旧类名,直到所有旧作业都已处理。确切地说,Sidekiq存储类名,因此如果您更改它,您需要保留旧类名,直到所有旧作业都已处理。