The Google Cloud SDK and App Engine SDK for Go each include a local development server that you can run locally to simulate your application running in production App Engine. The simulated environment enforces some sandbox restrictions, such as restricted system functions and Go module imports, but not others, like request time-outs or quotas.
The local development server also simulates the services provided by the libraries in the SDK for App Engine, including Datastore, Memcache, and Task Queues, by performing their tasks locally. Note that when your application is running in the development server, you can still make remote API calls to the production infrastructure using Google APIs HTTP endpoints.
Running the local development server
After you create the
configuration file for your app, you can start the local development server with
dev_appserver.py command to run your app locally.
To start the local development server:
Running the local development server (
To run the local development server, you can either run
specifying the full directory path or you can add
dev_appserver.py to your
PATH environment variable:
If you installed the App Engine SDK, the tool is located at
If you installed the Google Cloud SDK, the tool is located at
Tip: To add the Google Cloud SDK tools to your PATH and enable command-completion in your bash shell, you can run:
dev_appserver.pycommand as follows from the directory that contains your app's
Specify the directory path to your app, for example:
Alternatively, you can specify the configuration file of a specific service, for example:
To change the port, you include the
dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
goapp servecommand is included with the original App Engine SDK for Go and wraps the underlying
dev_appserver.pyPython tool. To start the local development server, you run:
Tip: Using the Python tool directly as
dev_appserver.pyprovides you with greater control over the local development server.
To learn more about the
dev_appserver.pycommand options, see Local Development Server Options.
The local development server is now running and listening for requests. You
can visit http://localhost:8080/ in your
web browser to see the app in action.
If you specified a custom port with the
--portoption, remember to open your browser to that port.
To stop the local server from the command line, you press the following:
- Mac OS X or Linux: Control-C
- Windows: Control-Break
Specifying application IDs
If you want to use application IDs with the local development server, don't use
the App ID from the
APPLICATION_ID environment variable. The development
server differs from production App Engine service in that the local server
prepends the string
dev~ to the
APPLICATION_ID environment variable.
Instead, if you need to access your App ID in the local server, for example to
spoof an email address, use the
function. To get the hostname of the running app, use the
Using the local Datastore
The local development server simulates the App Engine datastore using a local file that persists between invocations of the local server.
Browsing the local Datastore
If your app has written data to your local Datastore using the local development server, you can browse it in the local development console.
To browse local Datastore:
Access the Datastore Viewer in the local development console. (The URL is
View your local Datastore contents.
Specifying the ID allocation policy
For production App Engine, you can set the Datastore to automatically generate entity IDs.
Although the auto ID assignment policies for the production server are completely different than those used by the development server, you can also set the automatic ID allocation policy for the local server.
To specify the automatic ID assignment policy, use the
--auto_id_policy can be one of the following:
scattered: (default) IDs are assigned from a non-repeating sequence of approximately uniformly distributed integers.
sequential: IDs are assigned from the sequence of consecutive integers.
Clearing the local Datastore
To clear the local datastore for an application, invoke the local development server as follows:
dev_appserver.py --clear_datastore=yes app.yaml
Changing local Datastore location
To change the location used for the datastore file, use the
dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml
Using the Users service
App Engine provides a
Users Service to simplify
authentication and authorization for your application. The local development
server simulates the behavior of Google
with its own sign-in and sign-out pages. While running under the local
development server, the
functions return URLs for
/_ah/logout on the local server.
The local development server can send email for calls to the App Engine mail service using either an SMTP server or a local installation of Sendmail.
To enable mail support with an SMTP server, invoke
dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \ --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
where you set the
--smtp_password options with your own values.
To enable mail support with Sendmail, invoke
dev_appserver.py as follows:
dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
The local server will use the
sendmail command to send email messages with
your installation's default configuration.
Using URL Fetch
When your application uses the URL fetch API to make an HTTP request, the local development server makes the request directly from your computer. The URL Fetch behavior on the local server may differ from production App Engine if you use a proxy server for accessing websites.