2015-11-09 75 views
1

我有some_controllersome_action包括在內。
在我的一些數據傳遞給sidekiq工作的行動:從sidekiq發送數據到rails控制器而不保存在數據庫中

DoSomething.perform_async("some data") 

我怎樣才能得到的DoSomething.perform_async回控制器的結果,而不在數據庫中保存?

簡單Rails.cache.write('result')在sidekiq工作和Rails.cache.read('result')some_action不工作。

回答

2

Sidekiq和rails在單獨的processes中運行,因此它們不能共享內存。如果你不能共享內存,你還有其他選擇:

  1. 文件系統
  2. 對象存儲服務(如S3
  3. 數據庫(例如Redis的)
  4. signals

數據庫是最常見的選擇,但文件系統或對象存儲更適合許多任務,如圖像處理。信號功能有限,我只在這裏列出它們的完整性。

sidekiq作業中的簡單Rails.cache.write('result')和some_action中的Rails.cache.read('result')不起作用。

也許您正在使用ActiveSupport::Cache::MemoryStore,這不會跨進程工作,因爲進程不共享內存。還有其他緩存存儲區,但要注意切換之前的權衡。

相關問題