You may be saying to yourself, “So, I run out…now what?” Quotas roll over each night
at midnight. Whatever usage you had starts over with the new calendar day. (App
Engine uses Pacific Standard Time for billing and quota measurements, so it may not
be midnight in your location.) As you saw in Figure 2-2, you have the option to set daily
quota budgets. If your resources exceed what your budget allows, App Engine
considers those resources depleted and you'll have to either increase your budget or
wait for the next calendar day to get replenished. Except for data storage, which is a
rolling metric, all resource measurements are reset at the beginning of each day.
In addition to the daily quotas we've already discussed, App Engine measures a
few per-minute quotas. These are subsets of your daily allotment of resources but
have unique restrictions for per-minute usage. This is intended to protect your
application from using its daily allotment in a short period of time. And, of course,
being a multitenant environment, it also prevents other applications on App Engine
from monopolizing any one resource and affecting your application's performance. If
your application consumes a resource too quickly, the word “Limited” will appear
next to the quota line item in the Quota Details screen of your App Engine
Administration Console. Once a particular resource has been depleted, App Engine
will deny requests for that resource, returning an HTPT 403 Forbidden status code.
This may mean that your application will no longer function until the resource has
been replenished. The following resources have this type of behavior:
• Incoming bandwidth
• Outgoing bandwidth
For other resources that are depleted, the application will throw an exception of type
OverQuotaError . This can be caught and handled and you can respond accordingly.
For example, you may want to display a more friendly error message.
Note The OverQuotaError exception is not yet available for Java applications.
You're probably wondering whether you can query your application usage through the
API. Unfortunately, if you're using Java on App Engine, it's not possible (yet). For
Python applications on App Engine, you can query your application's CPU usage by
calling the Quota API.