Назад | Перейти на главную страницу

Как настроить файл app.yaml для appengine с помощью sanic framework с python 3.5+

Я новичок в GCP, мы выбрали разумную структуру, чтобы все работало более гладко. Sanic поддерживает python 3.5+, поэтому мы будем использовать гибкую среду для appengine.

Сейчас пытаюсь развернуть "Sanic" Привет, мир (Начать) приложение в appengine. и воткнул конфиг. проблема в

# This looks like a Python app.  If so, please enter the command to run 
the app in production (enter nothing if it's not a python app): :

Я просмотрел другие примеры Google Cloud Platform (образцы документов Python), которые доступны на GitHub, и все они использовали Gunicorn но у sanic есть встроенный http-сервер.

Может ли кто-нибудь предложить модель app.yaml для sanic на appengine. моя текущая установка выглядит следующим образом

1. app.yaml

    runtime: python
env: flex
threadsafe: true

runtime_config:
  python_version: 3

handlers:
- url: .*  # This regex directs all routes to main.app
  script: main.app

2. main.py

#import logging
from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route("/")
async def test(request):
    return json({"hello": "world"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

3. requirements.txt

httptools
sanic
ujson
uvloop

ОБНОВИТЬ.

добавлено entrypoint: python main.py к app.yaml Исправлена ​​моя проблема с развертыванием, но ошибка appengine вылетела.

Ошибка: ошибка сервера
Сервер обнаружил временную ошибку и не смог выполнить ваш запрос. Повторите попытку через 30 секунд.

Заранее спасибо. и если вы не можете решить мою проблему, не голосуйте против.

Если быть точным, вот и appengine app.yaml модель точки входа:

entrypoint: gunicorn <main:app> --bind 0.0.0.0:8080 --worker-class sanic.worker.GunicornWorker

Вам нужно обязательно установить пакеты пипсов. В настоящее время Appengine поддерживает версию 19.7.1.

Просто измените главное так:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=os.environ.get('PORT',8080))

и точка входа app.yaml в:

entrypoint: python main.py

Он должен работать.

Обновить:

У меня работает. Я просто меняю то, что написал выше, и развертываю новую версию в GAE-Flex.

Я не уверен, что это поможет.

У меня такая же проблема. Решено:

  1. добавление entrypoint: gunicorn -b :$PORT main:app к моему app.yaml файл.
  2. добавление "gunicorn==19.7.1" к моему requirements.txt файл.