8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
今日のレシピ
使っている開発環境・ライブラリ
並列処理の実装と並列処理のログ出力
Google APIのアクセス頻度を制御する
diff(文字単位、行単位、blameの実装)
xlsxファイルの読み込みと高速化
20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
並列処理のログ出力
そのまま出力しても順序が混ざってしまって読みにくくなってしまう
グループ情報付きのエラー出力関数を作って、一旦メモリに貯めておい
てグループごとに分類して出力するようにした。
APIアクセスエラーとか、入力ファイル名間違いなどの致命的な問題は
log.Fatal()するが、読み込んだ後は基本的に最後まで完走する設計にし
ている。
コンソールに出力したらJenkinsがそのまま表示してくれるので出しっ
ぱなし。JenkinsのText FinderプラグインでWARNINGの文字を見つけ
たら不安定(Unstable)扱いにしている。
グループ
21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Google APIのアクセス制御
ユーザごとの秒間アクセス数をGoogle Developer Consoleで設定して
も、それより大分下のアクセス頻度で403 User Rate Limit Exceeded
が出る件
⁃ 昔は数千でも設定できたけど、最近10回/秒までしか増やせなく
なったっぽい。ちなみに10億/日なのでフルにアクセスしても
0.1%しか行かない!
22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
time.Tickerを使って、アクセス頻度の制御を行うようにした
APIアクセスする関数(スレッドプールで並列で動いていても)の中で、
下記のAPIThrottling()関数を呼び出すと、呼び出しが適当に間引かれ
て実行されるようになった