こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

googleカレンダーapiでタイムアウト

2年程前からgoogleカレンダーと連携した社内アプリを作成して運用しています。
googleカレンダーからデータ取得処理を1日平均して200回程度行っているのですが今年の2月以降タイムアウトエラーが1日当たり1~3回程度発生する様になりました。
再度取得処理を行えば問題無く取得出来る様です。
特にgoogleカレンダー側で障害が発生しているとも思えないのですが、何が考えられますでしょうか
プログラム側でタイムアウト時に数回のリトライ処理を実装する等の対策を行うくらいしか
無いのでしょうか?

以下環境です
CentOS 7.4.1708
Apache 2.4.6
PHP 5.6.37
google-api-php-client-2.2.2

以下エラー発生時のログの一部となります。
[29-Feb-2020 15:18:39 Asia/Tokyo] 作成したPHPのID.PHP:Google_IO_Exception Object
(
[retryMap:Google_IO_Exception:private] => Array
(
[6] => -1
[7] => -1
[28] => -1
[35] => -1
[52] => -1
)

[message:protected] => Operation timed out after 100001 milliseconds with 0 out of -1 bytes received
[string:Exception:private] =>
[code:protected] => 28
[file:protected] => /var/data/google-api-php-client/src/Google/IO/Curl.php
[line:protected] => 126
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /var/data/google-api-php-client/src/Google/IO/Abstract.php
[line] => 136
[function] => executeRequest
[class] => Google_IO_Curl
[type] => ->
[args] => Array
(
[0] => Google_Http_Request Object
(
[batchHeaders:Google_Http_Request:private] => Array
(
[Content-Type] => application/http
[Content-Transfer-Encoding] => binary
[MIME-Version] => 1.0
)

[queryParams:protected] => Array
(
[maxResults] => 5000
[orderBy] => startTime
[singleEvents] => true
[timeMin] => 2020-02-22T00:00:00+09:00
[timeMax] => 2020-09-03T00:00:00+09:00
)

[requestMethod:protected] => GET
[requestHeaders:protected] => Array

投稿日時 - 2020-03-30 14:37:19

QNo.9729350

困ってます

質問者が選んだベストアンサー

はい、基本的に API へのリクエストを行うプログラムでは数回のリトライを行うように設計するのが普通です。ましてや外部の会社が無償で提供しているものは、一定の割合でフェイルするのが当然と考えましょう。Google Calendar API へのリトライであれば、最短で数秒の間隔をあけ、リトライの回数が増えるたびに指数関数的にリトライの間隔を広げていくようにしましょう。(サーバーやネットワークの負荷が高くてフェイルしているときにさらに負荷を上げてしまうのを防ぐため。)

投稿日時 - 2020-04-10 11:47:54

お礼

回答ありがとうございます。リトライ処理を実装し複数回応答が無い場合にエラーとする事にしました。又、エラー発生時に使用者へのメッセージをGoogle側の問題である事を表示して運用側(私)へクレームが来ないように修正しました(汗

投稿日時 - 2020-04-10 16:47:15

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問