我使用Sidekiq运行在控制器中延迟的方法(同时我使用Redis更新进度条)。这个方法调用服务器,检索数据,做一些操作和计算;然后可能需要一段时间。
例如,我有这个方法:
data_and_status = MyModelName.delay.retrieve_data(params[:tags], "preview", current_user, params[:from], params[:to])
此方法应返回操作的数据,但以这种方式执行data_and_status
是一个哈希(我猜这是Sidekiq-job-id)。
返回的数据非常大,不幸的是,使用Redis进行一些缓存是不可能的。
如何检索return value
延迟作业(方法)?
答案 0 :(得分:6)
你说返回的数据(来自异步作业)非常大,并且通过Redis中继它是不可能的。好吧,你的sidekiq作业在不同的进程中运行,甚至可能在不同的服务器上,所以你必须找到一些进程间的方式来传输数据 - 如果不是你的消息队列(Redis),那么数据库。
例如: