有沒有一種方法可以使用Heroku計劃程序在一天中的特定時段啓動和停止網絡測試儀?就像在營業時間說2個朝代和晚上只有1個動態?按日時間計劃網絡測試版的數量
我真的想避免把正常的用戶名/密碼憑證到應用程序本身,所以我(從每天做手工爲每個應用程序分開)尋找一種安全的方式來做到這一點。直接使用「heroku ps:scale web = 2」自然會很好,但據我所知這不被支持。
感謝提前任何反饋...
有沒有一種方法可以使用Heroku計劃程序在一天中的特定時段啓動和停止網絡測試儀?就像在營業時間說2個朝代和晚上只有1個動態?按日時間計劃網絡測試版的數量
我真的想避免把正常的用戶名/密碼憑證到應用程序本身,所以我(從每天做手工爲每個應用程序分開)尋找一種安全的方式來做到這一點。直接使用「heroku ps:scale web = 2」自然會很好,但據我所知這不被支持。
感謝提前任何反饋...
您可以通過創建一個使用Heroku的API的腳本擴展的時間表的Heroku DYNOS。然後您在Procfile中輸入一個條目並通過Heroku Scheduler插件調用它。具體方法如下:
首先,您需要到 'Heroku的' Python模塊添加到您的requirements.txt
:
Heroku的== 0.1.2
接下來,創建一個配置VAR包含你的API密鑰,所以你的腳本可以使用API。
Heroku的配置:添加HEROKU_API_KEY = your_api_key_string
您可以找到您的API密鑰on your heroku account page。
現在你可以編寫一個擴展你的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的調度網頁內您的整個任務,或者將其定義你的Procfile內,從網頁調用Procfile進程名。我更喜歡後者,因爲它可以輕鬆更新或更改流程,而無需登錄到heroku的網站。
所以,在你Procfile創建條目:
scale_up: python scale.py 2
scale_down: python scale.py 1
,然後安排他們:
瞧!您的dynos現在將在指定的時間向上或向下放大或縮小。
-
需要注意的是,一旦你已經創建了調度網頁上的計劃任務,你不能編輯它運行一天的時間,但如果你創建一個新的任務,您可以設置時間和日然後刪除您的舊任務。
注2:如果您嘗試縮小到0 dynos,或者如果您嘗試向上擴展(如果當前存在0個Web dynos),heroku python API似乎會拋出KeyError。爲了避免這兩種情況,只要不縮小到0 dynos。
它沒有內置到平臺中,但應該是很容易通過調度和使用您的API憑證來實現。
這個答案令人難以置信的詳細。非常感謝你爲這次投資。非常感謝...自然,我接受你的答案作爲答案。 :) – khaos 2012-08-15 05:24:36
謝謝! :)我很高興它幫助。誰知道也許其他人也會覺得它有用:) – culix 2012-08-15 06:44:54
我的同事問Heroku對此的支持,他們說這可以工作,但不建議使用Heroku Scheduler,因爲它是一個「盡力而爲」的服務,這意味着它不是保證運行或可能運行多次。 – 2015-02-23 04:57:32