Развертывание python flask-restful в облачном движке Google

Я впервые развертываю приложение Python в GAE, которое использует Flask-restful в качестве сервера REST, и я не могу понять, как правильно настроить развертывание.

Я пытаюсь использовать пример приложения с минимальным отдыхом в колбе minimal.py

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

И я настроил файл развертывания app.yaml следующим образом, где сетевой раздел пытается предоставить доступ к порту 5000 по умолчанию для flask-restful:

runtime: python
env: flex
entrypoint: python minimal.py

runtime_config:
  python_version: 3

network:
  instance_tag: instance-1
  name: default
  forwarded_ports:
    - 5000

Имя По умолчанию - единственная сеть, настроенная в моем VPC.

Инструкция по развертыванию была следующей, чтобы удалить предыдущие испытания, которые я сделал:

gcloud app deploy --promote --stop-previous-version

Итак, когда я пытаюсь использовать curl для публикации, я получаю ошибку 502, которую я также вижу на своем сервере.

Мне где-то не хватает шага ... возможно, в сети VPC или в конфигурации app.yaml, но сейчас я потерялся ...

Любая помощь будет очень признательна :)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
676
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте обновить вашу конфигурацию yaml.

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT minimal:app

runtime_config:
  python_version: 3

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Ссылка: https://cloud.google.com/appengine/docs/f flexible/python/configuring-your-app-with-app-yaml

Спасибо, сработало. Хотя мне пришлось выяснить, что Gunicorn нужно ежегодно добавлять в файл requirements.txt, чтобы он работал. Обычного pip freeze > requirements.txt, конечно, не хватит.

Rafael Morillo 21.05.2018 12:06

Другие вопросы по теме