Heroku APIを使用するスクリプトを作成することで、スケジュールに従ってheroku dynosを拡大縮小できます。 Procfileでエントリを作成し、Heroku Schedulerアドオンを使用して呼び出します。次は
Herokuの== 0.1.2
、含まれているコンフィグVARを作成する:あなたはrequirements.txt
に 'Herokuの' Pythonモジュールを追加する必要があります
まず:ここではどのようですAPIキーを使用すると、スクリプトでAPIを使用できます。
Herokuのコンフィグ:あなたのAPIキーon your heroku account pageを見つけることができます
をyour_api_key_string = HEROKU_API_KEYを追加します。
これで、あなたのdynosを拡大するpythonスクリプトを書くことができます。ここでは、コマンドライン引数としてdynosの数を受け入れる非常に基本的なスクリプトがあります。
import os
import sys
import heroku
"""Scale heroku web processes using the heroku python API."""
# you may want to add better argument processing, use argparse, etc.
dynos = int(sys.argv[1])
cloud = heroku.from_key(os.environ.get('HEROKU_API_KEY'))
app = cloud.apps['your_app_name']
try:
# you may want to add a maximum dyno check here to prevent costly mistakes ;)
webproc = app.processes['web']
webproc.scale(dynos)
except KeyError:
# note: scaling to 0 dynos or attempting to scale up if 0 web dynos exist
# both throw this error. Make sure you have at least one dyno.
print >> sys.stderr, "Could not scale web processes - are there 0 web dynos running?"
その後、Herokuのスケジューラ、Webページ内のあなたの全体のタスクを定義するか、またはあなたのProcfileの内側にそれを定義し、WebページからProcfileプロセス名を呼び出すことができます。 herokuのウェブサイトにログインしなくても、プロセスを更新したり変更したりすることが容易になるので、後者を好む。
scale_up: python scale.py 2
scale_down: python scale.py 1
をし、それらをスケジュール:
だから、あなたのProcfileにエントリを作成
![[image]](https://i.stack.imgur.com/1r8X6.png)
出来上がりを!あなたのdynosは、指定された時刻に拡大または縮小されます。
- あなたはスケジューラのWebページ上でスケジュールされたタスクを作成したら、あなたはそれが実行される時刻を編集することはできませんが、新しいタスクを作成する場合は、時間の日に設定することができますことを
注意と古いタスクを削除します。
注2:heroku python APIは、0のスケールにスケールダウンしようとすると、または現在0のウェブダイノスが存在する場合にスケールアップしようとすると、KeyErrorをスローするようです。両方を避けるには、0に調整しないでください。
この回答は信じられないほど詳細でした。今回はすべて投資していただきありがとうございます。自然に私はあなたの答えを_the_答えとして受け入れます。 :) – khaos
ありがとう! :)私はそれが助けてうれしいです。 ) – culix
私の同僚はこれについてHerokuのサポートに尋ねてきましたが、これはうまくいくと言いましたが、Heroku Schedulerは「ベストエフォート型」サービスであることをお勧めしませんでした。実行が保証されているか、複数回実行されている可能性があります。 –