Прошло 9 месяцев после времени выполнения Python 3.7 на новом приложении Google App Engine (Gae 2-го поколения) было принято вообще доступно (GA).
Если вы думаете о Миграция вашего приложения GAE из Python 2 в Python 3 Или начала нового приложения Python 3 GAE с нуля, необходимый первый шаг – настроить местную среду.
Требования:
- Python 3.
- Java JDK (я рекомендую OpenJDK 11 от Утверждать ) – это необходимо для запуска эмулятора хранения данных или FireStore (через облако SDK)
- Облако СДК
Я предполагаю, что вы знаете, как установить все эти Поэтому я не буду идти по шагам через него.
Я рекомендую использовать Pycharm в качестве IDE и используя виртуальные среды (которые очень … Leason Confort Via Pycharm ).
Компоненты облачных SDK
После установки Cloud SDK убедитесь, что включены следующие компоненты ( Инструкции ):
- Облачные сердечные библиотеки SDK (ядро)
- GCloud App Python Extensions (App-Engine-Python)
- GCloud App Python Extensions – Дополнительные библиотеки (App-Engine-Python-Extras)
- GCloud Beta Commands (Beta)
- Облако огнестойкий эмулятор (облачный огнестойкий эмулятор)
Базовое приложение для колбы
Давайте начнем с Basic Flask Web App.
Во-первых, создайте требования .txt Файл и добавить Колбу
в этом. Затем запустите эту команду, чтобы установить колбу через PYPI:
pip install -r requirements.txt
Далее создайте файл под названием main.py и введите следующий код в нем:
import os from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello World!" if __name__ == '__main__': if os.getenv('GAE_ENV', '').startswith('standard'): app.run() # production else: app.run(port=8080, host="localhost") # localhost
Теперь щелкните правой кнопкой мыши на файле Main.py в Pycharm и выберите «RUN». В качестве альтернативы вы можете запустить его через командную строку: Python Main.py
Отказ
Откройте свой браузер и перейдите в http://localhost: 8080 Отказ Вы должны увидеть Привет мир!
там.
HTML & CSS.
Если вы хотите, чтобы ваше веб-приложение для обслуживания HTML-файлов, создайте папку, называемую Шаблоны
и файл под названием index.html
В тудах (добавьте несколько HTML-код в нем).
Тогда вы можете редактировать свой Индекс ()
Обработчик для обслуживания файла HTML вместо Привет мир!
нить:
from flask import Flask, render_template app = Flask(__name__) @app.route("/") def index(): return render_template("index.html")
Для файлов CSS вам необходимо создать новую папку в корне, называемой статический
и разместить статические файлы (CSS, JavaScript, изображения и т. Д.) там.
app.yaml.
Двигатель Google App требует, чтобы вы имели файл конфигурации под названием App.yaml
Для каждого из ваших веб-приложений. Создайте этот файл в корне и добавьте этот код в нем:
runtime: python37 handlers: - url: /static static_dir: static - url: /.* script: auto
Обратите внимание, что этот файл не нужен для выполнения вашего приложения Flask. Но это необходимо для запуска приложения в Google Cloud (Google App Engine).
На данный момент ваше веб-приложение должно выглядеть что-то подобное: Базовое приложение GAE (Github) Отказ
Гостевая книга
Допустим, мы хотим построить простую гостевую книгу, которая имеет следующие элементы:
- Ящик ввода, где любой посетитель веб-сайта может ввести сообщение
- Список сообщений, добавленных посетителями сайта
Веб-приложение должно выглядеть что-то подобное:
Вот код HTML для этого:
{% if messages %} {% for item in messages %}Guestbook Simple GAE app with Firestore
Enter your message:
{{ item.message }} (message ID: {{item.id}})
{% endfor %} {% endif %}требования
Это приложение использует FireStore в качестве базы данных, которая требует дополнительных пакетов Pypi, которые будут добавлены в ваш требования .txt
Файл и установлен в вашей виртуальной среде:
Flask google-cloud-firestore mock google-auth
насмехаться
и Google-Auth
Библиотеки помогают нам подключиться к эмулятору Firestore на Localhost.
main.py
Давайте начнем наш main.py
Файл, создавая соединение с базой данных FireStore:
import os import mock from flask import Flask, render_template, request from google.cloud import firestore import google.auth.credentials app = Flask(__name__) if os.getenv('GAE_ENV', '').startswith('standard'): # production db = firestore.Client() else: # localhost os.environ["FIRESTORE_DATASET"] = "test" os.environ["FIRESTORE_EMULATOR_HOST"] = "localhost:8001" os.environ["FIRESTORE_EMULATOR_HOST_PATH"] = "localhost:8001/firestore" os.environ["FIRESTORE_HOST"] = "http://localhost:8001" os.environ["FIRESTORE_PROJECT_ID"] = "test" credentials = mock.Mock(spec=google.auth.credentials.Credentials) db = firestore.Client(project="test", credentials=credentials)
Как видите, подключение к базе данных FireStore на производстве (в облаке Google) требуется только одна строка кода: дб Клиент ()
Отказ Это потому, что Google Cloud будет выяснить, какие ваши учетные данные для доступа к Firestore есть.
Однако, если вы хотите запустить ваше веб-приложение локально и подключиться к эмулятору FireStore, вам нужно немного больше кода, чтобы настроить все (переменные среды и учетные данные).
Конечно, вы можете поставить этот кусок кода в отдельный файл и сделать все немного красивее (например здесь ), но для этого простого примера мы будем держать все в одном файле Python.
Теперь, когда у вас есть код для подключения к эмулятору FireStore, готовый, вы можете настроить Индекс ()
обработчик:
@app.route("/", methods=["GET", "POST"]) def index(): # get all messages from the Firestore messages_ref = db.collection(u'messages') # a reference to the messages collection messages_gen = messages_ref.stream() # messages generator: holds all message documents (these documents need to be converted to dicts) messages = [] for message in messages_gen: message_dict = message.to_dict() # converting DocumentSnapshot into a dictionary message_dict["id"] = message.id # adding message ID to the dict, because it's not there by default messages.append(message_dict) # appending the message dict to the messages list if request.method == "POST": # add message to Firestore message_ref = messages_ref.document() # create a message document reference # now you can create or update the message document (set: if it exists, update it. If not, create a new one). message_ref.set({ u'message': u'{}'.format(request.form.get("message")), }) return render_template("index.html", messages=messages) if __name__ == '__main__': if os.getenv('GAE_ENV', '').startswith('standard'): app.run() # production else: app.run(port=8080, host="localhost", debug=True) # localhost
Запуск эмулятора FireStore и приложение
Прежде чем вы сможете попробовать приложение Guestbook, вам нужно запустить эмулятор Firestore.
Откройте терминал и введите эту строку:
gcloud beta emulators firestore start --project test --host-port "localhost:8001"
Подождите, пока не начнет эмулятор. Вы можете подтвердить, что он успешно начал, собираясь на http://localhost: 8001/ – Если ты видишь На
эмулятор включен.
Теперь вы можете запустить ваше веб-приложение (как раньше) и попробуйте приложение для гостевой книги.
Смотрите полный пример здесь Отказ
Вывод
Вот и это – вы настроили простое приложение для колбы, которое работает на Localhost и использует эмулятор Firestore. Если вы хотите развернуть ваше веб-приложение в Google App Engine, следуйте за Эти шаги Отказ
Дайте знать, если у вас появятся вопросы.:) Для более примеров проверить Этот репозиторий Github Отказ
Оригинал: “https://dev.to/ramuta/how-to-use-the-firestore-emulator-with-a-python-3-flask-app-31jm”