Ruby on rails 3 延迟方法的Sidekiq返回值
我使用Sidekiq来运行控制器中延迟的方法(同时我使用Redis来更新进度条)。该方法调用服务器,检索数据,进行一些操作和计算;然后可能需要一段时间 例如,我有以下方法:Ruby on rails 3 延迟方法的Sidekiq返回值,ruby-on-rails-3,backgroundworker,sidekiq,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\u和\u status是一个散
data_and_status = MyModelName.delay.retrieve_data(params[:tags], "preview", current_user, params[:from], params[:to])
这个方法应该返回被操纵的数据,但是以这种方式执行data\u和\u status
是一个散列(我猜这就是Sidekiq作业id)。
返回的数据非常大,不幸的是,使用Redis进行一些缓存是不可能的
如何检索延迟作业(方法)的
返回值
?您说(从异步作业)返回的数据非常大,不可能通过Redis进行中继。好的,您的sidekiq作业在不同的进程中运行,甚至可能在不同的服务器上运行,因此您必须找到一些进程间的方法来传输数据——如果不是您的消息队列(Redis),则是数据库
例如:
谢谢您的回复!然后,您建议使用DB在某个地方存储一个指示作业“状态”的标志?当完成从db或/tmp中的文件检索结果数据时?如果您只想检查作业的状态,可以使用sidekiq插件来跟踪:请参阅