作ったものを振り返る Part1.5

このエントリーでPart1ラストとなります!

概略

今回はHerokuでの運用についてご紹介します!

具体的にはHerokuでの定期実行とadd-onのpostgreSQLの使い方についてです。

目標

HerokuでPythonプログラムを定期実行してDBに格納し、前回アクセスしたときとの差分を知る。

Herokuでの定期実行

定期実行するにはadd-onのHeroku Schedulerを使います。ただし、add-onとして入れるにはクレジットカードの登録が必須になるのでちょっと注意が必要です。

Heroku Scheduler

使い方は至って簡単です。

図1のようなjob追加画面まで行くと、定期実行するコマンドを入力できるので

Python [ファイル名] とやってやることで簡単にPythonスクリプトを定期実行することが出来ます。

あとは"定期"の定義を行います。

図1の場合だとX時30分(Xは現在時刻から最も近い未来の時間)から1時間ごとに実行されます。

あと、この時間はグリニッジ標準時(GMT:Greenwich Mean Time)なので設定時間は実行したい時間の9時間前と考えます。

そして、このFREQUENCYですが

  • Daily
  • Hourly
  • Every 10 minutes

しか選択できません…

当然30分ごととかに設定したいということもあるでしょう。

そういうときは単純にjobの数を増やしてしまいましょう!

ここが詳しいので詳細が気になる人はリンク先を覗いてみてください!

[caption id="attachment_184" align="alignnone" width="600"] 図1. Heroku Schedulerのjob追加画面[/caption]

PosgreSQL

Add-onの検索欄でHeroku Postgresで検索すれば出てくるので追加します。

settingに行くと図2のような設定画面が表示されます。

この図2に表示されているHeroku CLIをコマンドから叩くとHeroku上のDBを操作できるのでテーブルを作っておきます。

あとはPythonスクリプト側のDBのURLを図2に表示されているURIと指定すればPythonスクリプト側からDBを操作することが可能になります!

[caption id="attachment_187" align="alignnone" width="700"] 図2. Heroku Postgreの設定画面[/caption]

Heroku上でchromedriverを動かす

注意するべきは以下の2点です。

  1. chromedriver用にbuildpackを追加する
  2. スクリプト側でchromedriverインスタンスを作るときのbinary_locationの指定

これらについては実は以前の投稿で説明していますので詳細はリンク先を参照してください♪

終わりに

これで"作ったものを振り返るシリーズ"のPart1が終了しました!

Pythonはいろんなライブラリが揃っているので手軽にやりたいことを実現できるのが魅力的だと思います。

実は次に作ろうとしているものの構想をちょっとは考えているのでお楽しみに!

では。