我有一个工作人员,它从s3下载JSON,然后是将文件解析为我的db的流JSON解析器(Oj Saj)。我可以从工作人员的类中更新工作人员的状态,但是一旦进入解析器类,它就不在工作人员的范围之内(或者对我来说似乎如此)
class Worker
include Sidekiq::Worker
include Sidekiq::Status::Worker
class SajParser << Oj::Saj
at 5 #this doesn't update the status of the worker
end
def perform()
at 5 #this does update the status of the worker
end
end
我想要一个解决方案,允许我在解析器检查JSON并将其插入db时更新worker的状态。
答案 0 :(得分:0)
如果您可以使Sidekiq :: Status #at
方法采用作业的jid
进行更新及其当前状态,则可以。也许您可以跟进这个issue,似乎与您所拥有的一样。
如果我可能建议实际使用Sidekiq的能力来并行化解析器的工作,则将它分配给更多的工作程序,而不是让一个工作程序来完成工作,因为您将json存储在内存中,则可以为json的每个部分旋转作业,并且每当一个完成后,它应该将其状态存储在所有作业(例如DB)之间可访问的位置。