Python3 script を雑に heroku で動かせるようにする

手元で動かしてた python スクリプトを web サービス化したときの備忘録です。
なお python 歴はゼロから deep learning 作ったくらいです。

モチベーション

秘伝の python script があった。
手元で動かすのがめんどくなったのでどうにかしたかったが、某サーバー群で python 動かすのとかがダルかったので heroku とかに適当にホストしておきたくなった。

要件は、heroku で動くこと、python3 であること、軽く認証っぽい何かがあることくらい。

実装

misc/python_simple_server.py at master · hkdnet/misc · GitHub

だいたい書いてある通り。 do_GET 潰すの忘れてデプロイしたら普通にディレクトリ見えてビビったのでマジで注意。
検証してないけど bind アドレスを忘れるとかもありそうである1

requirements.txt はレポジトリルートに置いといたら勝手に読んでくれた。助かる。

Procfile はこんな感じ。heroku は 2018-05-02 現在デフォでpython3なので特に気にしなくてよい。

web: python server.py

雑に検証した感じがこれ

$ curl localhost:8000
$ curl -XPOST -d "foo=bar" localhost:8000
$ curl -XPOST -H "Authorization: Bearer YOUR_TOKEN" -d "foo=bar" localhost:8000

# サーバー側のログ↓
127.0.0.1 - - [03/May/2018 04:44:15] "GET / HTTP/1.1" 400 -
127.0.0.1 - - [03/May/2018 04:44:26] "POST / HTTP/1.1" 400 -
127.0.0.1 - - [03/May/2018 04:44:41] "POST / HTTP/1.1" 200 -

蛇足

  • virtualenv -p python3 . で環境つくっておく
  • pip install autopep8autopep8 -i foo.py しとく

  1. 最初から '0.0.0.0' 指定したからそれで動かないのか自信がないが