我some_controller
some_action
包括。{
在动作中,我将一些数据传递给sidekiq作业:
DoSomething.perform_async("some data")
如何在不保存数据库的情况下将DoSomething.perform_async
的结果返回给控制器?
sidekiq作业中的简单Rails.cache.write('result')
和Rails.cache.read('result')
中的some_action
不起作用。
答案 0 :(得分:2)
Sidekiq和rails在单独的processes中运行,因此无法共享内存。如果你不能共享内存,你还有其他选择:
数据库是最常见的选择,但文件系统或对象存储更适合于许多任务,如图像处理。信号功能有限,我只在此列出完整性。
sidekiq作业中的简单Rails.cache.write('result')和some_action中的Rails.cache.read('result')不起作用。
也许你正在使用ActiveSupport::Cache::MemoryStore,它不能跨进程工作,因为进程不共享内存。还有其他缓存存储,但在切换之前要注意权衡。