LoginSignup
4
2

More than 3 years have passed since last update.

GAE/python3.7でbottle.pyする

Last updated at Posted at 2019-04-16

いつの間にかGoogleAppEngineのStandardでpython3が使えるようになっていたので、bottle.pyしてみました。
チュートリアルはflask使ったりしてました。が、bottle好きなので。

python3については 以前からflexible環境なら使えてたらしーのだけれど、flexibleにするなら他のPaaSでいいしな、と久しく触ってなかったGAE。
py3使えるならそりゃ飛び付きますよ。鯖のお守りとかしたくないし。

導入の雑なステップとしては以下の通り

  • SDKをインストール(本記事では割愛)
  • app.yamlを書く
  • requirements.txtを書く
  • main.pyを書く

app.yaml

runtime: python37

これだけでOK。
ずいぶんスッキリしている。

bottle.pyらしくだと、お好みでstatic以下のhandlerも追加してもいいかも。
handler指定がないのはmain.pyのappに勝手にルーティングされてくれるらしいのでそこは書いてないです。

handlers:
- url: /(.*\.(css|png|jpg|gif|ico|js))$
  static_files: static/\1
  upload: static/.*\.(css|png|jpg|gif|ico|js)$

requirements.txt

pipのPodfile的なファイルらしい。
これに書いとくとdeploy時にpipでインストールしてくれるらしい。

Bottle==0.12.16

main.py

from bottle import Bottle

app = Bottle()

@app.route('/')
def top():
    return "Hello, world!"

if __name__ == '__main__':
    app.run(host='localhost', port=8080,reloader=True,debug=True)

で、gcloud deployすると、なんか動くみたい。

すごい楽チンだ。。。素晴らしい。。。

もちろん。python3 ./main.pyでlocalhost:8080で動きます。

し、さらにこのあとFirestore試してたら認証周り勝手に設定してくれて、一切の苦労なしにローカルからリモートのDB覗けてる。すごい時代や。。。

その他

  • ドキュメントが整備というか整理というかされてないけどpython-docs-samplesを眺めて、雰囲気で書いてたら無事になんか動くっぽい。
  • .gcloudignoreに正規表現を書いとくとdeploy対象外に指定できる(.gitignoreみたいに)

virtualenvしない

チュートリアルにvirtualenv入れろとか書いてあるけど必須じゃないし、面倒いので
pip3 install -r requirements.txt -t ./lib/で適当なフォルダに突っ込んで、main.pyの先頭でローカル実行ならソコ参照するように入れてみた。ちゃんと動く。
適当なフォルダを.gcloudignoreへ追加するも忘れずに。

if __name__ == '__main__': # add local lib path
    import sys,os
    sys.path.append(os.path.join(os.path.dirname(__file__), 'lib'))
4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2