Thursday, October 14, 2010

New App Engine SDK 1.3.8 includes New Admin Tools and Performance Improvements

Today, we’re releasing version 1.3.8 of the App Engine SDK. Whether you’re a Java or a Python developer, this release includes several exciting new features for improving monitoring, performance, and maintenance tasks.

Instances Console

This release includes a new page in the Admin Console, called the Instances page. This page allows you to view information about all server instances currently in use by your application. This information can be useful in debugging your application and also understanding its performance characteristics. There’s no configuration needed for this feature. Just click the “Instances” link on the left hand navigation of the Admin Console to see Average QPS, latency, and memory for an instance.

Screenshot of the instances page of the Admin Console

Task Queue Improvements

This release also has a couple new Task Queue features: First, the maximum bucket size that you can specify during queue configuration is now 100, up from 50. Second, we’ve added a new "Run Now" button to the Task Queues section of the Admin Console that enables developers to run a task immediately. This can be very helpful for debugging your tasks in production.

Builtins Directives

This release contains a new feature for Python apps: builtin handlers that allow you to quickly and easily enable standard functionality in your application without adding additional code to your codebase. The libraries available today are remote_api, appstats, and the datastore_admin feature (see below). For example, to use the remote_api with your application, simply add the following to your app.yaml file:

builtins:
- remote_api: on

If you are already using the remote api endpoint your app, you can choose to remove the entry in the handlers section of your app.yaml and use the above directive instead to simplify your app.yaml file.

Support for builtin handlers is not yet available for Java applications, but will be available in an upcoming release.

Delete all (or a part) of your application’s data

Note: this feature is currently only available by default for Python; see the note below for ways to use it with Java application.

Today, we are releasing an experimental addition to the admin console which provides a simple UI for delete all entities, or all entities of a given kind, in your datastore. To enable this functionality, simply enable the following builtin in your app.yaml file:

builtins:
- datastore_admin: on

Adding these lines to app.yaml enables the “Datastore Admin” page in your app’s Admin Console, where you can see all of the entity types you are able to delete:

Screenshot of the datastore delete builtin UI

Be aware that these deletes are issued by your application (you can read about how the handler works by looking at this code file in the SDK). For this reason, your application will use resources, most significantly CPU, for the deletions you issue which will count towards your application’s daily resource budget.

Datastore delete is currently available only with the Python runtime. Java applications, however, can still take advantage of this feature by creating a non-default Python application version that enables Datastore Admin in the app.yaml. Native support for Java will be included in an upcoming release.

Python Pre-compilation on by Default

Finally, the python pre-compilation feature we announced in 1.3.5 is now turned on for all new python application uploads using the 1.3.8 SDK by default. If you wish to disable this feature, just specify the flag --no-precompilation on the appcfg.py command line when uploading your app.

This release also contains a few more small features and bug fixes. You can read about the full release in our release notes in Python and Java. As always, your feedback in the forums is appreciated (and had a significant influence on this release!).

14 comments:

Unknown said...

Great features, however I had hoped you would have addressed the more basic need for Java developers to be able to delete an index using the console. Please consider this for the next release.

Unknown said...
This comment has been removed by the author.
Unknown said...

I second the request for the ability to delete an index from the console for Java.

Having to deal with a dummy Python app just for the sake of being able to clean up unused indexes is odd and awkward.

Borys Burnayev
actioncomplete.com
GTD for Android and Web

Oleg said...

Very disappointed to see that delete indexes functionality for Java developers is not included in this release.

Ganesh said...

Why are java developers treated like step children? :(

I don't even know how to create a non-default python project for deleting all data.

rks said...

Does clearing the data also clear the memcache? If not can we please have a way to do that as well.

Giovanni Totaro said...

Hey, great job!
But I've found a LAST-MINUTE FEATURE-CUT PYTHON-DOCUMENTATION bug! :)

SDK 1.3.8 prerelease release notes says:
"You can use this to download both Python and Java application code".

It disappeared from the final version... but pieces of the new documentation are still floating here:
Python - Tools - Uploading and Managing - Uploading the App. Seems that this page needs a minor review ;)

And... go go go on Issue 792: SSL/HTTPS Support on Google Apps domains, it is REALLY IMPORTANT to develop commercial services!

Thank you! :)

GoSharpLite said...

I am using Eclipse 3.5 to develop AppEngine and Android together, since Android does not recommend using Eclipse 3.6.
Google Plugin for Eclipse 3.5 is still using SDK 1.3.7, can't update new SDK 1.3.8. Is there a way to manually install SDK 1.3.8 for Eclipse 3.5?

Unknown said...

Great features.

Anonymous said...

Access all these in your PROD env on GAE -
1) Interactive Console
2) Memcache full manager
3) XMPP bot
4) IncomingMail Stub

Add the below to appr section in ur APP.YAML file in Python (or similar file in java)

handlers:
- url: /admin/.*
script: $PYTHON_LIB/google/appengine/ext/admin
login: admin

admin_console:
pages:
- name: My Console
url: /admin/interactive
- name: My Memcache
url: /admin/memcache
- name: My XMPP
url: /admin/xmpp
- name: My Inbound Mail
url: /admin/inboundmail

Above links will be visible on GAE Dashboard towards left-bottom as Custom-Pages section

Best part is the Interactive Console where u can interactively run commands in ur PROD env and check values etc whatever u wish !!!
cheers !

Giovanni Totaro said...

Hey you GAE dev guys, not so interested in feedback, right?

Giovanni Totaro said...

Glad you just fixed the online documentation... :)
But yet missing the offline update: http://code.google.com/intl/it-IT/appengine/downloads.html
So pedantic I am ;D

William Vambenepe said...

Hmm, average latency is just the average of the latency of the various instances, independently of the traffic of each? Really?

In the screenshot: 569.7=(0+1709+0)/3

That's pretty misleading.

More comments about the new GAE instance management console at:
http://stage.vambenepe.com/archives/1641

DF said...

It's --no_precompilation with an underline (_), not --no-precompilation.