Python3.7 で AppEngine スタンダード環境をつかってみる
2.x の AppEngine ランタイムから結構変わってた
requirements.txt 読んでくれる
app.yaml が結構変わってた
entrypoint が指定できる
version 消えた
デプロイが遅い
3分ほど
NDB とかのサポートが消えた
GoogleCloud の SDK をつかって Datastore 等を利用する
500エラーの原因が分からない
エラーによっては Nginx が見えたりする
AppEngine 固有の仕組みが減って、基盤が共通化された?
Responder を使う
Responder は WSGI ではなくて ASGI 互換
uvicorn を使う
static を書き込もうとしてエラーに
static ディレクトリを作っておく
code:app.yaml
runtime: python37
entrypoint: gunicorn --bind 0.0.0.0:$PORT -c gunicorn_conf.py main:app
handlers:
- url: /.*
script: auto
secure: always
entrypoint で gunicorn を指定
python main.py みたいな指定だと500エラーになって原因わからず…
割り当てられる $PORT をみるように
code:gunicorn.py
worker_class = 'uvicorn.workers.UvicornWorker'
gunicorn デフォルトのワーカーだと ASGI に対応できないので Uvicorn の Worker を使う
code:requirements.txt
responder
gunicorn
uvicorn
依存関係はここに書いておけばデプロイ時にインストールしてくれる
code:main.py
import responder
app = responder.API()
@app.route("/")
async def index(req, resp):
resp.text = f"Hello World."
とりあえずHelloWorld