Using the local development server

The Google Cloud CLI includes a local development server (dev_appserver.py). You can use the local development server to simulate running your App Engine application in production as well as use it to access App Engine legacy bundled services. The simulated environment enforces some sandbox restrictions, such as restricted system functions and runtime language module imports, but not others, like request timeouts 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. When your application is running in the development server, you can still make remote API calls to the production infrastructure by using the Google API HTTP endpoints.

Set up the local development server

To run the local development server tool, you must set up the following:

  1. Verify that you have installed a Python 3 interpreter that is compatible with the Python version required by the gcloud CLI.
  2. Verify that you have installed the Google Cloud CLI component that includes the App Engine extension for Python 3 (app-engine-python):

    gcloud components list
    

    If the app-engine-python component is not installed, run the following command:

    gcloud components install app-engine-python
    
  3. Locate the installation path of Google Cloud SDK by running the following command:

    gcloud info
    

    The command returns the root directory where you installed Google Cloud SDK, for example:

    Installation Root: [/Users/myname/google-cloud-sdk]

  4. Locate the dev_appserver.py tool under the /bin/ folder where you installed Google Cloud CLI, for example:

    CLOUD_SDK_ROOT/bin/dev_appserver.py
    
  5. Note the path to the dev_appserver.py for later.

Run the local development server

After setting up the local development server and creating the app.yaml configuration file for your app, you can use the dev_appserver.py command to run your app locally.

To start the local development server:

  • 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 --port option, remember to open your browser to that port.

  • To stop the local server from the command line, press the following:

    • macOS or Linux: Control+C
    • Windows: Control+Break

    Specify application IDs

    Detect application runtime environment

    Use the Mail service

    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.

    Using SMTP

    To enable mail support with an SMTP server, invoke dev_appserver.py as follows::

    python3 [CLOUD_SDK_ROOT]/bin/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_host, --smtp_port, --smtp_user and --smtp_password options with your own values.

    Using Sendmail

    To enable mail support with Sendmail, invoke dev_appserver.py as follows:

    python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
    

    The local server uses the sendmail command to send email messages with your installation's default configuration.

    Use the URL Fetch service

    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.

    Use 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 Accounts with its own sign-in and sign-out pages.

    Command-line arguments

    For the local development server command options, see Local development server options.