如何在Rails中的多用户应用程序中管理API请求?

时间:2015-12-21 05:07:12

标签: ruby-on-rails

在我的应用程序中,当用户添加对象时,它会向第三方站点执行一个API请求。对于单个用户,可以立即发送请求。但API调用受限于每秒3次。因此,当用户的qtt增加时,它将是一个麻烦。我建议ActiveJob + Sidekiq将完成工作,但是如何在工作完成后获得结果? 我的一个用户代码:

Yii::$app->response->format = Response::FORMAT_JSON;

如何使用controller.rb def create wall = get_request(code_constructor({params for constructor },[])) end module CommonMods def code_constructor(meth_name, meth_params, code) param_str = [] meth_params.each_pair do |name, value| param_str << '"' + name.to_s + '":'+ value.to_s end param_str = param_str.join(',') code << meth_name + '({' + param_str + '})' end def get_request(code) i = 0 result = [] while i < code.size part_code = code.slice(i, i + 25) if part_code.size >1 part_code = part_code.join(',') else part_code = part_code[0] end url='https://api.site.com/method/' uri = URI.parse(url) parameters = {'code' => "return [#{part_code}];"} response = Net::HTTP.post_form(uri, parameters) result = result + JSON.parse(response.body)['response'] i += 25 end result end end param在队列中执行get_request方法并继续在控制器中收到响应?或者它可能有不同的方式来制作它?

0 个答案:

没有答案