Sidekiq返回延迟方法的值

时间:2013-11-15 19:55:46

标签: ruby-on-rails-3 backgroundworker sidekiq

我使用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延迟作业(方法)?

1 个答案:

答案 0 :(得分:6)

你说返回的数据(来自异步作业)非常大,并且通过Redis中继它是不可能的。好吧,你的sidekiq作业在不同的进程中运行,甚至可能在不同的服务器上,所以你必须找到一些进程间的方式来传输数据 - 如果不是你的消息队列(Redis),那么数据库。

例如:

enter image description here