Aimless Blog

Google App EngineでFlaskを使う

Tag:
pythongae

Google App EngineでFlaskを使う時のチュートリアル。
環境はスタンダード、Python2系。

Google App Engineでサードパーティ製ライブラリを使う

GAEでサードパーティ製ライブラリを使うにはルートディレクトリにlibディレクトリを作ってそこにライブラリをインストールします。
最初にvirtualenvで仮想環境化します。
Flaskをインストールする場合は

mkdir lib
pip install -t lib/ Flask

これでlibディレクトリにFlaskがインストールされました。

他のライブラリも同様に入れることができます。requirements.txtを作成して一気に入れる場合は、

pip install -t lib -r requirements.txt

でライブラリをインストールできます。

appengine_config.py

appengine_config.pyというファイルをapp.yamlがある場所に作成して、以下の記述をする

# appengine_config.py
# coding: utf-8
from google.appengine.ext import vendor
# Add any libraries install in the "lib" folder.
vendor.add('lib')

プロジェクトのディレクトリ構成はこんな感じになる

myproject/
  lib/
  app.yaml
  appengine_config.py
  main.py

「組み込みサードパーティ ライブラリ」にあるライブラリははapp.yamlに記述するだけでいい

libraries:
- name: jinja2
  version: 2.6

でも、ローカルサーバーで確認する場合は結局libディレクトリ内にインストールする必要があると思うのであまり意味がないような

app.yaml

app.yamlにstaticファイルやテンプレートファイルの場所を記述します

runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static

- url: /templates
  static_dir: .*\.html

- url: /.*
  script: main.app

main.pyにFlaskをインポート

#!  /usr/bin/env python
#-*- coding: utf-8-*-
from flask import Flask, request, redirect, url_for, render_template, g

app = Flask(__name__)

@app.route('/')
def test():
    return "Hello World!"

ローカルにサーバーを立ち上げる

dev_appserver.py .でローカルにサーバーを立ち上げて、localhost:8080にブラウザからアクセスすると"Hello World!"が表示されると思います。

デプロイ

gcloud app deploy app.yaml --project プロジェクト名でデプロイ。
https://プロジェクト名.appspot.com/にアクセスして"Hello World!"が表示されていることを確認。

参考サイト:
Getting Started with Flask on App Engine Standard Environment
サードパーティライブラリの使い方:Using third-party libraries