Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 延迟方法的Sidekiq返回值_Ruby On Rails 3_Backgroundworker_Sidekiq - Fatal编程技术网

Ruby on rails 3 延迟方法的Sidekiq返回值

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是一个散

我使用Sidekiq来运行控制器中延迟的方法(同时我使用Redis来更新进度条)。该方法调用服务器,检索数据,进行一些操作和计算;然后可能需要一段时间

例如,我有以下方法:

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插件来跟踪:请参阅