cul*_*lix 14
您可以通过创建使用Heroku API的脚本按计划缩放heroku dynos.然后在Procfile中创建一个条目,并通过Heroku Scheduler插件调用它.这是如何做:
首先,您需要将'heroku'python模块添加到您的requirements.txt:
Heroku的== 0.1.2
接下来,创建一个包含API密钥的config var,以便您的脚本可以使用API.
heroku config:添加HEROKU_API_KEY = your_api_key_string
您可以在heroku帐户页面上找到您的API密钥.
现在你将能够编写一个可以扩展你的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?"
Run Code Online (Sandbox Code Playgroud)
然后,您可以在Heroku Scheduler网页中定义整个任务,也可以在Procfile中定义它,并从网页中调用Procfile进程名称.我更喜欢后者,因为它可以轻松更新或更改流程,而无需登录heroku的网站.
因此,在Procfile中创建条目:
scale_up: python scale.py 2
scale_down: python scale.py 1
Run Code Online (Sandbox Code Playgroud)
然后安排他们:
瞧!您的dynos现在将在一天的指定时间放大或缩小.
-
请注意,在"计划程序"网页上创建计划任务后,您无法编辑其运行的时间,但如果您创建新任务,则可以设置时间日,然后删除旧任务.
注意2:如果您尝试缩小到0 dynos,或者如果当前存在0个web dynos,则尝试向上扩展,则heroku python API似乎会抛出KeyError.要避免两者,只要不缩小到0 dynos.
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |