1. Обзор

Приложения Google App Engine легко создавать, легко поддерживать и легко масштабировать по мере изменения ваших потребностей в трафике и хранении данных. С App Engine нет необходимости обслуживать серверы. Вы просто загружаете свое приложение, и оно готово к работе.
В этом практическом занятии вы узнаете, как развернуть простое веб-приложение на Python, написанное с использованием веб-фреймворка Flask . Хотя в этом примере используется Flask, вы можете использовать и другие веб-фреймворки, включая Django , Pyramid , Bottle и web.py.
Данный учебный материал адаптирован из https://cloud.google.com/appengine/docs/standard/python3/quickstart
Что вы узнаете
- Как создать простой Python-сервер на Google App Engine.
- Как обновить код, не отключая сервер.
Что вам понадобится
- Знание языка Python
- Знание стандартных текстовых редакторов Linux, таких как vim, emacs или nano.
Опрос
Как вы будете использовать этот учебный материал?
Как бы вы оценили свой опыт работы с Python?
Как бы вы оценили свой опыт использования сервисов Google Cloud?
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



- Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как
PROJECT_ID). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта. - К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
- Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Cloud Shell — среду командной строки, работающую в облаке.
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.

Если вы запускаете Cloud Shell впервые, вам будет показан промежуточный экран с описанием его возможностей. Если вам был показан промежуточный экран, нажмите «Продолжить» .

Подготовка и подключение к Cloud Shell займут всего несколько минут.

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, ваша работа в этом практическом задании может быть выполнена с помощью браузера.
После подключения к Cloud Shell вы увидите, что прошли аутентификацию и что проект настроен на ваш идентификатор проекта.
- Выполните следующую команду в Cloud Shell, чтобы подтвердить свою аутентификацию:
gcloud auth list
вывод команды
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью следующей команды:
gcloud config set project <PROJECT_ID>
вывод команды
Updated property [core/project].
3. Напишите веб-приложение.
После запуска Cloud Shell вы можете использовать командную строку для вызова команды gcloud Cloud SDK или других инструментов, доступных в экземпляре виртуальной машины. Вы можете использовать свой каталог $HOME в качестве постоянного дискового хранилища для хранения файлов между проектами и между сеансами Cloud Shell. Ваш каталог $HOME является личным и недоступен для других пользователей.
Для начала создадим новую папку для приложения в вашем домашнем каталоге $HOME ):
mkdir ~/helloworld cd ~/helloworld
Создайте файл с именем main.py :
touch main.py
Отредактируйте файл с помощью предпочитаемого вами редактора командной строки (nano, vim или emacs) или нажав кнопку Cloud Shell Editor:

Для непосредственного редактирования файла с помощью Cloud Shell Editor используйте следующую команду:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
return "Hello World!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
4. Определите зависимости
Чтобы указать зависимости вашего веб-приложения, вернитесь в терминал и создайте файл requirements.txt в корневом каталоге вашего проекта, указав точную версию Flask, которую вы хотите использовать:
touch requirements.txt
Для редактирования файла с помощью Cloud Shell Editor используйте следующую команду:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Настройка развертывания
Для развертывания веб-приложения в App Engine вам потребуется файл app.yaml . Этот конфигурационный файл определяет настройки вашего веб-приложения для App Engine.
В терминале создайте и отредактируйте файл app.yaml в корневом каталоге вашего проекта:
touch app.yaml
Для редактирования файла с помощью Cloud Shell Editor используйте следующую команду:
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Разверните веб-приложение
Проверьте содержимое вашей директории в терминале:
ls
У вас должны быть следующие 3 файла:
app.yaml main.py requirements.txt
Разверните веб-приложение с помощью следующей команды:
gcloud app deploy
При первом запуске необходимо выбрать регион развертывания:
Please choose the region where you want your App Engine application located: [1] asia-east2 ... [7] australia-southeast1 [8] europe-west [9] europe-west2 ... [12] northamerica-northeast1 [13] southamerica-east1 ... [19] us-west4 ... Please enter your numeric choice:
Подтвердите запуск развертывания:
Creating App Engine application in project [PROJECT_ID] and region [REGION]....done. Services to deploy: descriptor: [~/helloworld/app.yaml] source: [~/helloworld] target project: [PROJECT_ID] target service: [default] target version: [YYYYMMDDtHHMMSS] target url: [https://PROJECT_ID.REGION_ID.r.appspot.com] Do you want to continue (Y/n)?
Ваше приложение развернуто:
Beginning deployment of service [default]... Created .gcloudignore file. See `gcloud topic gcloudignore` for details. Uploading 3 files to Google Cloud Storage 100% File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Ваше веб-приложение теперь готово отвечать на HTTP-запросы по адресу https://PROJECT_ID.REGION_ID.r.appspot.com .
7. Протестируйте веб-приложение.
Ваше веб-приложение готово отвечать на HTTP-запросы по адресу https://PROJECT_ID.REGION_ID.r.appspot.com .
Сначала получите имя хоста вашего веб-приложения с помощью команды gcloud app describe :
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Протестируйте свое веб-приложение с помощью этого простого HTTP GET-запроса:
curl https://$APPENGINE_HOSTNAME
В результате вы должны получить следующий ответ:
Hello World!
Краткое содержание
На предыдущих шагах вы настроили простое веб-приложение на Python, запустили его и развернули в App Engine.
8. Обновите веб-приложение.
Измените ваше веб-приложение, изменив тело функции hello() в файле main.py
Для редактирования файла с помощью Cloud Shell Editor используйте следующую команду:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
# return "Hello World!\n" # ← Replace this line
who = flask.request.args.get("who", "World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
Для обновления веб-приложения выполните повторное развертывание в терминале:
gcloud app deploy --quiet
Новая версия вашего приложения будет развернута:
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Протестируйте новую версию своего веб-приложения точно так же, как и раньше:
curl https://$APPENGINE_HOSTNAME
Вы должны получить тот же ответ:
Hello World!
Проверьте это с помощью необязательного параметра:
curl https://$APPENGINE_HOSTNAME?who=Universe
В результате вы должны получить следующий ответ:
Hello Universe!
Краткое содержание
На этом этапе вы обновили и повторно развернули свое веб-приложение без каких-либо перебоев в работе сервиса.
9. Поздравляем!
Вы научились писать своё первое веб-приложение для App Engine на Python!
Узнать больше
- Документация App Engine: https://cloud.google.com/appengine
- Изучите это руководство, чтобы написать полноценное приложение на Python для App Engine: https://cloud.google.com/appengine/docs/standard/python3/building-app
Лицензия
Данная работа распространяется под лицензией Creative Commons Attribution 2.0 Generic.