読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Herokuで無料でたくさんTwitter Streamingボットを実装する方法

Herokuでは、ここ2年ほどで無料のdynoに関して変遷がありましたが、今はアカウント毎に毎月所定の時間のdyno hourを割り当てるということに落ち着いたようです。

Twitterでリプライやフォローバックをリアルタイムで自動でしようと思うと、Streaming APIを利用するのが効率的ですが、Streaming APIを毎日24時間モニタするには24時間*31日のdyno hourをworkerで消費します。

無料分でやろうと思うと1つが限度ですね。
でも、もしもボットがCPUもメモリもそれほど食わないなら、フリーのdynoには512MBのメモリと4core-8threadのCPUが味方ですから、複数のボットを1つのdynoで動かせるはずです。

その方法をご紹介します。

使用言語はPythonを仮定しました。

1. PythonのForemanクローン、honchoを使う。
Herokuアプリの基本になるProcfileは以下のようになります。

worker: honcho -f ProcfileHoncho start

(*ProfileHochoは任意のファイル名です)

2. 続いてProcfileHonchoに動かしたいボットアプリを記述します。

mimiaka1846: python3 mimiaka/stream.py
retweet_ramen: python3 retweet_ramen/retweeter.py

(*注
mimiaka1846は私が運営している耳赤サイト用アカウントmimiaka1846の自動フォローバックアプリです。
retweet_ramenは私が運営しているラーメンなう。(@retweet_ramen)の自動リツイートアプリです。)

Python3を使いましたのでruntime.txtは以下の通りです。

python-3.6.0

後は、それぞれのアプリをコーディングして、使用したパッケージ情報まとめたrequirements.txtを用意すれば完了です。

CPUパワーとメモリが許す限り、ProcfileHonchoに何個アプリを追加しても、消費する無料dyno hourは変わりません。