我目前正在开发一个rails项目,我被要求保存sidekiq worker的进度并存储它,因此使用该应用程序的用户可以看到进度。现在我面对这个困境,最好是写出文本文件或将其保存在数据库中。
如果是数据库,那么如何将其保存在模型对象中。我知道我们可以通过将信息发送到日志文件来存储工作人员的进度。
类YourWorker 包括Sidekiq ::工人
def perform
logger.info { "Things are happening." }
logger.debug { "Here's some info: #{hash.inspect}" }
end
因此,如果我想在数据模型中保存工作人员的进度,那么如何?
答案 0 :(得分:1)
您的主题标题表示数据是非结构化的,但您的问题描述表明数据应该是结构化的。这是什么?速度并不总是最重要的考虑因素,在您的情况下似乎并不重要。最重要的考虑因素是如何使用您的数据。您的数据在未来的使用方式会改变吗?通常,具有适当模型的数据库是更好的答案,因为它允许灵活地满足未来的要求。它还允许其他客户访问您的数据。
答案 1 :(得分:0)
您可以创建一个Job
类,然后更新当前工作作业的某些属性。
class Job < ActiveRecord::Base
# assume that there is a 'status' attribute that is defined as 'text'
end
然后,当您对某些内容进行排队时,您需要创建一个新的Job
并将id
的{{1}}传递给Job
或perform
。
perform_async
然后在您的工作人员中,您将收到要处理的作业的ID,然后检索并更新该记录。
job = Job.create!
YourWorker.perform_async job.id