Google Cloud Platform
Python

Deploying a Python App

This page shows you how to use the appcfg command to deploy your app. The appcfg tool is included with the App Engine Python SDK.

  1. Before you begin
    1. Using a proxy
  2. Uploading an app
  3. Updating indexes
  4. What's next

Before you begin

Using a proxy

If you'll be running appcfg on a system which uses an HTTP(S) proxy, set environment variables so that the tool can communicate via the proxy.

Windows

set HTTP_PROXY=http://cache.example.com:3128
set HTTPS_PROXY=http://cache.example.com:3128

Mac / Linux

export http_proxy="http://cache.example.com:3128"
export https_proxy="http://cache.example.com:3128"

Uploading an app

To upload your application files, run the appcfg.py command with the update action and the name of your application's root directory. The root directory must contain the app.yaml file for the application.

appcfg.py update myapp/

If this is your first time using the tool, you'll be asked to authorize it through a browser. By default, the token will be stored in the .appcfg_oauth2_tokens file in your home directory so you won't be asked again.

The tool will automatically use the application ID from the app.yaml file. However, many of our sample applications omit application: from the app.yaml file, so you will need to specify a Console project ID as the application ID when deploying them:

appcfg.py -A <YOUR_PROJECT_ID> update myapp/

If your app is factored into more than one Module, you can specify which services should be updated.

  • If you are updating the default service, it must come first in the list.
  • If you are uploading the app for the first time, the default service must be included.
cd myapp
appcfg.py update app.yaml mod1.yaml mod2.yaml

You will receive verification via the command line as each service is successfully deployed.

Updating indexes

If your app's index.yaml file defines an index that doesn't yet exist, App Engine will create it after you upload your app. This process may take a while, and any query that requires the index will raise an exception until the index is built.

To prevent this:

  1. Give the app a new version number in app.yaml.
  2. In the Cloud Platform Console, check the status of the app's indexes.
  3. Once the index has been built, manually update the default version in the Cloud Platform Console.

Alternatively:

  1. Upload the index.yaml configuration before uploading the app:

    appcfg.py update_indexes myapp/
    
  2. In the Cloud Platform Console, check the status of the app's indexes.

  3. Once the index has been built, upload your app.

What's next