読者です 読者をやめる 読者になる 読者になる

#appengine にてMailAPIのOverQuotaExceptionを発生させてみた。

エラー内容は下記

org.slim3.controller.Controller runBare: The API call mail.Send() required more quota than is unavailable.
com.google.apphosting.api.ApiProxy$OverQuotaException: The API call mail.Send() required more quota than is unavailable.
	at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:176)
	at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:37)
	at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:75)
	at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:71)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:71)
	at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:37)
	at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:79)
	at com.google.appengine.api.mail.MailServiceImpl.doSend(MailServiceImpl.java:95)
	at com.google.appengine.api.mail.MailServiceImpl.send(MailServiceImpl.java:32)
	at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:247)
	at javax.mail.Transport.send(Transport.java:95)
	at javax.mail.Transport.send(Transport.java:48)

OverQuotaExceptionが発生したら管理者にメールするとかもいいのかもなぁ〜とか考えてます。
MailAPIのOverQuotaExceptionだったらそもそも管理者にもメールできないかもしれませんが。

追記 ApiDeadlineExceededException

引き続きテストしてたらこんなエラーも出た。API呼び出しに時間がかかったということだろうか。

org.slim3.controller.Controller runBare: The API call mail.Send() took too long to respond and was cancelled.
com.google.apphosting.api.ApiProxy$ApiDeadlineExceededException: The API call mail.Send() took too long to respond and was cancelled.
	at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:109)
	at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:37)
	at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:75)
	at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:71)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:71)
	at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:37)
	at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:79)
	at com.google.appengine.api.mail.MailServiceImpl.doSend(MailServiceImpl.java:95)
	at com.google.appengine.api.mail.MailServiceImpl.send(MailServiceImpl.java:32)
	at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:247)
	at javax.mail.Transport.send(Transport.java:95)
	at javax.mail.Transport.send(Transport.java:48)

Billing Settingsをして有料にしたらどうなるかをテストしていますが、Billing Settingsってすぐに有効になるのかな??
1分間に32件しかメールAPI呼び出しできないという制限をBilling Settingsで回避したいんだが出来ているのかがよくわからん。。グルージェント本によるとBilling Settingsすると4900回までOKになると書いてある。

Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)

さらに追記

Billing Settingsしてから10分後くらいにはもう有効になってる風です。OverQuotaExceptionがまったく発生しなくなりました。1分間に32件の制限は回避されたようです。