【Heroku】Python × FlaskでLINE Botをホスティングする
この記事は以下の記事の続きです。今回はPythonで作成したプログラムをホスティングする方法について書いていきます。ホスティングの際は前回の記事で作成したコードをFlaskフレームワークを使用し、HTTPサーバ化します。
※LINEへのプッシュ通知機能のプログラムは以下の記事にて紹介しています。
ホスティング情報
フレームワーク:Flask 1.0.2
ホスティング:heroku
フレームワークとしてFlaskを採用
正直に言うとLINEへのプッシュ通知を行うだけにはフレームワークは必要ないです。ただし、私の場合はFlaskというフレームワークを使用し、HTTPサーバ化することにしました。フレームワークを使用する目的は今後の拡張性を考えてです。LINE Botプログラムに複数機能を追加した際のルーティングの容易性やDB接続を追加した際のをことを考えています。
とはいえ、そこまでBotに多機能性を求めないと思いますので、フルスタックフレームワークのDjangoではなく、Flaskを採用しました。
今回はルーティング機能を使います
今回はFlaskのルーティング機能のみを使用します。Flaskのルーティングはとてもシンプルで実行したいメソッドの上にアノテーションを付与するのみで大丈夫です。
from flask import Flask @app.route("/line_notif", methods=["GET"])
前回の記事で記載したLINEへの通知メソッドにアノテーションを付与し、以下のようにします。
from flask import Flask from linebot import LineBotApi from linebot.models import TextSendMessage from linebot.exceptions import LineBotApiError LINE_ACCESS_TOKEN= "XXXXXXXXXXXXXXXXXXXX" # ラインアクセストークン LINE_USER_ID= "YYYYYYYYYYYYYYYYYYYYYYYYY" # ライン # ルーティング用に @app.route("/line_notif", methods=["GET"]) def line_notif(): line_bot_api = LineBotApi(LINE_ACCESS_TOKEN) text_message ="テストメッセージです。" try: line_bot_api.multicast( [LINE_USER_ID], TextSendMessage(text=text_message) ) except LineBotApiError as e: print(e)
これでHTTPのGETメソッドでLINE通知を送れるようになります。
Herokuでホスティングします
ホスティングサービスとしてはHerokuを使用します。Herokuを選んだ理由は以下の2点です。
- ホスティングが非常に簡単なため。
- ホスティングや定期実行の機能が無料で使用できるため。
以前PythonアプリケーションをHerokuにデプロイしたことがあるのですが、非常に簡単だったのが非常に良かったです。(その時はDjangoをフレームワークとして使用しました。)また、定期実行機能なども含めて無料で使用できるので、ちょっとしたアプリをホスティングするには最適だと言えます。
Herokuでのホスティングのための基本的な知識
Herokuへのデプロイ方法や必要なファイルは以下の記事にて紹介していますので、こちらの記事を参照してください。
※以下の記事で使用しているフレームワークはDjangoですが、Flaskでも大した違いはありません。
Herokuホスティングに必要なファイルを作成する
runtime.txt
python-3.7.0
Procfile
web: gunicorn app:app --log-file=-
requirements.txt
gunicorn==19.6.0 requests==2.21.0 flask==1.0.2 line-bot-sdk==1.8.0
今回のアプリでは上記があればよいと思います。
herokuへデプロイする
以前の記事でも紹介していますが、デプロイはherokuのレポジトリにプッシュするのみでOKです。
git push https://heroku:"APIキー"@git.heroku.com/"アプリ名".git master
以上で完了です。これで指定したURLへリクエストを送ると、自身のLINEアカウントに通知が送られてくるはずです。
ディスカッション
コメント一覧
まだ、コメントがありません