Google DriveのRate Limit



 ここ最近Google Driveを使ってシステム構築できないかいろいろ試してきたが使っていてなんだか不安定だなと思っていたのだが、プログラムの問題ではなくGoogle Driveのアクセス制限(Rate Limit)であることに気が付いた。

事前にあまり情報がなかったので帯域や通信制限がどのようになっているのか気にはなっていたが、特に制限はないと勘違いしていたが、明確にアクセス回数制限に上限があるようだ。


Google DriveのRate Limitの確認方法


まずGoogle APIのダッシュボード画面に行くDashboard
Google Driveを使っている場合、画像のようにGoogle Drive APIへのリンクが出ている。
ここをクリックしGoogle Drive APIのダッシュボードに移動する。

gd_dashboard

ここで左のメニューから"割り当て"をクリックする。

gd_rate_limit
そうすると、Google Drive APIのRate Limitが表示される。
無料会員の場合、下記のような制限になってると思います。

Queries per day: 1,000,000,000
Queries per 100 seconds per user:  1,000
Queries per 100 seconds: 10,000

100秒間に1000リクエストの制限があるので短時間で大量にファイルをアップロードするような処理をpyDriveで実装しても、Rate Limitに引っかかってしまいプロセスがkillされてしまう。google-drive-ocamlfuseが不安定だったのもこのせいだと思われたが、100秒当たりのコール数を確認しても1000コールにほど遠い状況。1日のコール数も全然少ないので問題ない。


gd_api_rate


何か他にもありそう。
pythonのプログラムが"Killed"のメッセージだけ残して落ちるのでほぼほぼ手掛かりがないが、exceptionに引っかかってるわけではないので、外部(OS)からKillされているっぽい。
topコマンドでメモリ使用量を見てると、流してくとメモリ使用量が徐々に増えているのがわかる。
プログラムはほぼほぼここで公開しているものと同じだが果たしてどこでリークしているのか...