English ▼
Skip to page content Skip to main navigation
e.g. "templates" or "datastore"

# Tools and Tips

This page summarizes many useful tools and resources for working in App Engine. Use this document to find tools related to the following common uses or APIs.

### App Development

Name | What it is, and why use it? | More Information
--- | --- | ---
AppStats | Language: Python and Java Description: Measure the performance of your app with Appstats. Appstats is a suite of App and API call profiling tools that record events and provide a web-based administrative interface for browsing statistics. | More Info: Appstats for Python Appstats for Java Easy Performance Profiling with Appstats (Google App Engine Blog)
Datastore SQLite Stub | Language: Python Only Description: If you store a lot of data in your datastore, you can improve performance and startup times by switching to SQLite as the backend for your local datastore stub. | More Info: Switching to SQLite for your local Datstore Announcing the SQLite datastore stub... (Nick's Blog)
Local Unit Testing | Language: Java Only Description: Write tests that use local service implementations that are bundled with the SDK. | More Info: Local Unit Testing
Samples for Google App Engine | Language: Python Only Description: Check out sample applications that run on App Engine. You may check out samples from the trunk of the project. | More Info: Samples for Google App Engine Project Page Samples for Google App Engine Wiki

### App Management

Name | What it is, and why use it? | More Information
--- | --- | ---
Capabilities API | Language: Python and Java Description: Use the Capabilities API to identify API outages and scheduled downtime. | More Info: Capabilities API package summary (Java) Capabilities API source (Python)
DoS Protection Service Configuration | Language: Python and Java Description: Protect your application from running out of quota when subjected to DoS attacks or similar events with App Engine Denial of Service Protection Service. You can update the DoS configuration when you upload your application to App Engine, or you can update just the DoS configuration without uploading the rest of your application. | More Info: Uploading DoS Configuration (Java) Uploading DoS Configuration (Python)
Zipserve | Language: Python Only Description: Use Zipserve to allow your app to serve static files from a zipfile. This is useful for apps that need to serve a 1000+ small static files while staying within the 1000-file limit. | More Info: Zipserve source

### App Performance

Name | What it is, and why use it? | More Information
--- | --- | ---
AppStats | Language: Python and Java Description: Measure the performance of your app with Appstats. Appstats is a suite of App and API call profiling tools that record events and provide a web-based administrative interface for browsing statistics. | More Info: Appstats for Python Appstats for Java Easy Performance Profiling with Appstats (Google App Engine Blog)
Precompilation | Language: Python and Java Description: Enhance the performance of your app using precompilation. Precompilation is already enabled by default, but you have the option to disable it. | More Info: Python Precompilation Java Precompilation

### App Testing

Name | What it is, and why use it? | More Information
--- | --- | ---
Local Unit Testing | Language: Java Only Description: Write tests that use local service implementations that are bundled with the SDK. | More Info: Local Unit Testing

### Blobstore API

Name | What it is, and why use it? | More Information
--- | --- | ---
Blobreader and BlobstoreInputStream | Language: Python and Java Description: Read Blobs via a file-like interface using BlobReader in Python and/or BlobstoreInputStream in Java. | More Info: BlobReader class (Python) BlobstoreInputStream class summary (Java)

### Datastore

Name | What it is, and why use it? | More Information
--- | --- | ---
Bulk Loader | Language: Python and Java Description: Upload and download data to and from your application's datastore using the bulk loader tool. Python developers can use it directly from the `appcfg.py` command. Java developers can use `appcfg.py` from a Java app by installing the Java version of the remote_api handler. | More Info: Uploading and Downloading Data
Datastore Statistics | Language: Python and Java Description: View statistics about the data stored for an application using Datastore Statistics. You can view these statistics from the Administration Console under Datastore > Statistics or access these values programmatically within your application. | More Info: Datastore Statistics in Python Datastore Statistics in Java
Datastore SQLite Stub | Language: Python Only Description: If you store a lot of data in your datastore, you can improve performance and startup times by switching to SQLite as the backend for your local datastore stub. | More Info: Switching to SQLite for your local Datstore Announcing the SQLite datastore stub... (Nick's Blog)
Development Console | Language: Python and Java Description: Use the development console included in the development web server to browse the local datastore. | More Info: The Development Console (Python) The Development Console (Java)
Expando Class | Language: Python Only Description: Use dynamic properties with datastore entities. | More Info: The Expando Class
Mapper API | Language: Python and Java Description: Manipulate data on a large scale using the Mapper API, which is one component of the MapReduce toolkit. | More Info: Introducing the Mapper API Exploring the new mapper API in Python (Nick's blog) Using the Java mapper framework (Ikai Lan's blog) AppEngine Mapreduce Project Page.
Remote API | Language: Python Only Description: Access the datastore remotely while still using the standard familiar APIs with the remote_api module. This is useful when you need to manipulate the datastore in ways that are not well suited to the request/response model used for serving web applications. | More Info: Accessing the datastore remotely with remote_api
Transactional Tasks | Language: Python and Java Description: Enqueue tasks as part of a datastore transaction using Transactional Tasks such that the task is only enqueued—and guaranteed to be enqueued—if the transaction is committed successfully. | More Info: Tasks within Transactions (Python) Tasks within Transactions (Java)

### Mail API

Name | What it is, and why use it? | More Information
--- | --- | ---
Ereporter | Language: Python Only Description: Receive exception reports from your application via email by using the `google.appengine.ext.ereporter` package. | More Info: Recording Exceptions with ereporter

### Memcache

Name | What it is, and why use it? | More Information
--- | --- | ---
Development Console | Language: Python and Java Description: Use the development console included in the development web server to browse the local datastore. | More Info: The Development Console (Python) The Development Console (Java)

### Task Queue

Name | What it is, and why use it? | More Information
--- | --- | ---
Deferred Library | Language: Python Only Description: Execute arbitrary functions using the Task Queue. This can be useful for one-off or ad-hoc tasks. The Deferred library lets you bypass all the work of setting up dedicated task handlers and serializing/deserializing parameters by exposing a simple function, `deferred.defer()`. | More Info: Background work with the deferred library
Task Queue Storage Limits | Language: Python and Java Description: Configure your task queue to specify or limit the total amount of storage task data that is allowed to be consumed over all queues. | More Info: Python Task Queue Configuration Java Task Queue Configuration
Transactional Tasks | Language: Python and Java Description: Enqueue tasks as part of a datastore transaction using Transactional Tasks such that the task is only enqueued—and guaranteed to be enqueued—if the transaction is committed successfully. | More Info: Tasks within Transactions (Python) Tasks within Transactions (Java)

### Users API

Name | What it is, and why use it? | More Information
--- | --- | ---
OAuth | Language: Python and Java Description: Allow users to grant a third party or application limited permission to access your app on his or her behalf without sharing credentials using the OAuth protocol. | More Info: OAuth for Python Overview OAuth for Java Overview
OpenID | Language: Python and Java Description: Allow users to authenticate using their OpenID credentials by selecting Federated Login" instead of "Google Accounts" at creation time. | More Info: Using Federated Authentication via OpenID Using OpenID authentication (Nick's Blog)