You can't use the latest version of dev_appserver.py
to locally run your
applications for runtimes that reached end of support.
To continue using an archived version of dev_appserver.py
, follow the instructions in this guide.
You can use the local development server to simulate running your App Engine application in production, as well as using 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.
Before you begin
To download an archived version of devapp_server.py
, follow these steps:
From the archive, download the zipped folder that contains the
dev_appserver.py
server for runtimes that have reached the end of support.Extract the directory's contents to your local file system, such as to your
/home
directory. You can finddev_appserver.py
in thegoogle_appengine/
directory.
Set up the local development server
To run the local development server tool, you must set up the following:
Verify that you have installed a Python 2 interpreter of version 2.7.12 or later.
Set the
DEVAPPSERVER_PYTHON
environment variable in your shell to the path of your Python 2 interpreter.Locate the
dev_appserver.py
tool under the/google_appengine/
folder where you extract the downloaded archive, for example:DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py
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:
-
In the directory that contains your
app.yaml
configuration file, run thedev_appserver.py
command.Specify the directory path to your app, for example:
python2
DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py --runtime_python_path=/usr/bin/python2 [PATH_TO_YOUR_APP]You can also set the argument to a comma-separated list of
[RUNTIME_ID]=[PYTHON_INTERPRETER_PATH]
pairs. For example:python2
DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py --runtime_python_path="python27=/usr/bin/python2.7" [PATH_TO_YOUR_APP]To change the port, include the
--port
option:python2
DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py --runtime_python_path=/usr/bin/python2 --port=9999 [PATH_TO_YOUR_APP]Replace DEVAPPSERVER_ROOT with the path to the folder where you extract the archived version of
devapp_server.py
. - 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
To access your App ID in the local server, for example to spoof an email
address, use the get_application_id()
function.
To get the hostname of the running app, use the get_default_version_hostname()
function.
Detect application runtime environment
To determine whether your code is running in production or in the local
development server, you can check the value of the GAE_ENV
environment
variable:
if os.getenv('GAE_ENV', '').startswith('standard'):
# Production in the standard environment
else:
# Local development server
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.
To enable mail support with an SMTP server, invoke dev_appserver.py
as
follows:
python2 DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns PATH_TO_YOUR_APP
Replace:
- DEVAPPSERVER_ROOT with the path to the folder where you
extract the archived version of
devapp_server.py
. --smtp_host
,--smtp_port
,--smtp_user
and--smtp_password
options with your own configuration values.- PATH_TO_YOUR_APP with the path to your application.
To enable mail support with Sendmail, invoke dev_appserver.py
as follows:
python2 DEVAPPSERVER_ROOT /google_appengine/dev_appserver.py --enable_sendmail=yes PATH_TO_YOUR_APP
Replace:
- DEVAPPSERVER_ROOT with the path to the folder where you
extract the archived version of
devapp_server.py
. - PATH_TO_YOUR_APP with the path to your application.
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.
While running under the local
development server, the functions return URLs for /_ah/login
and /_ah/logout
on the local server.
Command-line arguments
For the local development server command options, see Local development server options.