2013-09-26 29 views
0

我目前正在一個rails項目上工作,我被要求保存一個sidekiq工人的進度並存儲它,所以使用該應用程序的用戶可以看到進度。現在我面對這種困境,只是寫出一個文本文件或將它保存在數據庫中更好。sidekiq方法在sqlite3數據庫中存儲一些數據,而不是redis?

如果是數據庫,那麼如何將它保存在模型對象中。我知道我們可以通過發送信息到日誌文件來存儲工作人員的進度。

類YourWorker 包括Sidekiq ::工人

def perform 
    logger.info { "Things are happening." } 
    logger.debug { "Here's some info: #{hash.inspect}" } 
    end 

所以,如果我想保存在數據勞模的進步,那麼如何?

回答

0

您可以創建一個Job類,然後更新當前工作作業的某個屬性。

class Job < ActiveRecord::Base 
    # assume that there is a 'status' attribute that is defined as 'text' 
end 

然後,當你排隊事情發生,你創建一個新的Job並通過Jobperformperform_asyncid

job = Job.create! 
YourWorker.perform_async job.id 

然後在您的工作人員中,您將收到待處理作業的ID,然後檢索並更新該記錄。

def perform(job_id) 
    job = Job.find job_id 
    job.status = "It's happening!" 
    job.save 
end 
1

你的主題標題說數據是非結構化的,但你的問題描述表明數據應該是結構化的。這是什麼?速度並不總是最重要的考慮因素,對您而言似乎並不重要。最重要的考慮因素是您的數據將如何使用。你的數據會在未來的變化中使用嗎?通常,具有合適模型的數據庫是更好的答案,因爲它可以爲將來的需求提供靈活性。它還允許其他客戶端訪問您的數據。

相關問題