実行したこと
下記associationモジュールのkick_crmメソッドにkick_crm(:get, "hoge.com")のような形で引数を与えリクエストを行っています。リクエスト実行後、動作が少し遅いなと思い、AWSのX-Rayという解析ツールで解析を行ったところ、kick_crm(:get, "hoge.com")というコマンドを一度実行しただけにも関わらず、3回もリクエストが実行されておりました。
正確に申し上げれば、その3回のうち2回は401の認証エラーではじかれており、最後の1回が200でリクエスト成功しておりました。
質問
①何故、3回リクエストがされてしまうのでしょうか?
(推測で構いません。全く原因が分かりません。どんな情報でもヒントになります。お助け願います)
②リクエストが一度だけ送信されるように変更したいのですが、どのような対処が必要だと思いますか?
(こちらも推測で結構です。何かヒントをいただければ幸いです。mechanizeを使用することがそもそもダメだという場合は、何か代替案をご教示いただければ幸いです。。)
該当のソースコード
ruby
1 module Association 2 # 各種初期化を実施して接続用インスタンスを返す 3 def connect() 4 m = MechanizeExtension.new 5 m.add_auth(WEB_API_BASE_URL, CRM_SETTINGS["userName"], CRM_SETTINGS["password"], nil, CRM_SETTINGS["domain"]) 6 m 7 end 8 9 # web apiリクエスト時のヘッダ設定 10 def _add_base_header() 11 header = { 12 'Accept' => 'application/json', 13 'Content-Type' => 'application/json; charset=utf-8', 14 'OData-MaxVersion' => '4.0', 15 'OData-Version' => '4.0', 16 'Prefer' => %Q(odata.maxpagesize=#{CRM_MAX_PAGE_SIZE},odata.include-annotations="*") 17 } 18 end 19 20 # web apiへのリクエスト送信 21 def kick_crm(method, requestUrl, *recordObject) 22 connection = connect 23 case method 24 when :get 25 response = connection.send(method, requestUrl, [], nil,_add_base_header) 26 when :post, :patch 27 response = connection.send(method, requestUrl, _add_base_header, JSON.generate(recordObject[0]) ) 28 end 29 rescue Exception => e 30 Rails.logger.error "エラー発生: #{e}" 31 false 32 end 33 end # Association
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/10 06:09