“Call REST Web Service(REST Web サービス呼出)” で60秒以内に処理が完了しない場合に空の値が返却される。(Web APIの呼び出しを空振る)

フォローする

ロボットからWeb APIを呼び出す方法として、”Call REST Web Service(REST Web サービス呼出)” と “Call SOAP Web Service(SOAP Web サービス呼出)” の2種類が存在します。

同様に外部プログラムを呼び出す ”Execute Command Line(コマンド ライン実行)” 命令の場合は完全同期のIFで、呼び出し元から返答がない限り延々とロボットは外部プログラムからのレスポンスを待ち続けますが、上記2つのWeb API コールについては、通常のWebアクセス(Load Page(ページ読込)など)と同様に、ロボット内の Timeout for Each Attempt(s) (試行タイムアウト(秒))に設定された時間を上限に、それを超えた場合にはタイムアウトとしてエラーを発生します。

default_timeout.png

そのような仕様から、通常は指定時間を超えて呼び出し先のシステムからレスポンスがない場合はロボットもエラーを発生するべきですが、”Call REST Web Service(REST Web サービス呼出)” の場合にはエラー情報がロボット側に通知されず、レスポンスのないまま(リターン値がからのまま)処理が継続されてしまうと言う不具合が存在します。(”Call SOAP Web Service(SOAP Web サービス呼出)” についてはエラーが表示されます。)

<回避策>

状況によってレスポンスまでに60秒以上掛かるWeb APIを呼び出す場合、もしくは REST Call によって別のロボットを呼び出す場合には、当該 “Call REST Web Service(REST Web サービス呼出)” ステップ内の Action(アクション)タブ底にある “more(詳細)” ボタンをクリックし、そのステップの実行最大待ち時間(Timeout(試行タイムアウト))の値を、呼び出し先処理の実行に掛かる最大値で設定してください。(10分程度掛かる可能性がある場合には 600.0)

call_rest_service_more.png

<補足>

TomcatとApacheが導入されている環境において、<回避策>の対応を行っても下記の様なエラーが回避できない場合があります。
レスポンスまでに60秒以上掛かるWeb APIを呼び出す場合、Apacheのタイムアウト値のデフォルトが60秒ですので、Apache側のタイムアウト値を変更していただく必要があります。

・エラー内容

Error from the REST Web サービス呼出 action. Error calling REST web service.[ロボット名]からのロード中に 500 Internal Server Error が発生しました