Gmail likes to advertise rival web site hosting companies to me when I’m reading App Engine related emails. Clearly, someone at Gmail has an interesting sense of humor.
When an application makes an URLFetch request, App Engine adds the following text as the User-Agentheader:
Even if the application sets a custom user agent header, App Engine will append the above text to the header.
This can be annoying because there are some servers and services that rate limit based on the user agent. If there is a human reviewing the request logs, it can be confusing to see a stream of largely-identical user agent strings.
It’s good practice to set a descriptive user agent for all URL fetches. It’s even better if you can write your user agent with App Engine’s required text in mind. For instance, consider writing user agent headers like this one: App Engine Example Crawler hosted by. When App Engine appends its required text to the end of this, the receiving server will see an user agent of:
App Engine Example Crawler hosted by
This user agent header looks cleaner, neater, and is easier for a human to understand.
Here is the above in code form:
String user_agent = "App Engine Example Crawler";
user_agent += " hosted by ";//After this, GAE will append the identifier.
The connection variable represents a java.net.HttpURLConnection object.
App Engine is currently upgrading all applications to the 1.8.4 runtime. Here’s how the upgrade process looks on a free tier application.
On the main administration screen, this notice appears:
Clicking the Details link brings you to the Instances page, where this shows up:
The first instance loaded under the 1.8.4 runtime was launched on August 25, 14:43 PDT:
An interesting tidbit for today’s post: apparently a Compute Engine machine can temporarily push over 100% CPU utilization. Here’s a screenshot from my project:
Subject: Update on the PHP for Google App Engine Limited Preview program
I recently received this email from the App Engine team. It’s great timing, since I’m planning on moving more PHP applications to App Engine.
The following is an example of a request originating from a cron:
It’s easy to tell this request originates from cron because (1) the originating IP is 0.1.0.1 (which is a reserved IP; cron requests come only from that address) and (2) the queue name is listed as cron .