我有一个从s3下载JSON的worker,然后是一个流JSON解析器(Oj Saj),它将文件解析到我的数据库中。我可以从worker的类更新worker状态,但是一旦我进入解析器类,它就超出了worker的作用域(至少在我看来是这样)
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并将其插入到数据库中时更新worker的状态。
发布于 2019-05-22 11:33:21
如果你可以让Sidekiq::Status #at方法获取要更新的作业的jid和它的当前状态,那么这是可能的。也许你可以跟进这个issue,它看起来和你的一样。
如果我建议实际使用Sidekiq的功能来并行化解析器的工作,而不是让一个工作程序来做工作,因为你在内存中有json,你可以为json的每个部分旋转一个作业,每当其中一个完成时,它应该将它的状态存储在所有作业之间可以访问的地方,比如DB。
https://stackoverflow.com/questions/56195034
复制相似问题