我正在尝试创建一个脚本来检查我的dyno是否处于空闲状态,如果是,则停止dyno/webapp。唯一的问题是,它似乎什么也不做,即使post请求将返回并被接受:
from email import header
import requests
import dotenv
heroku_api_token = "Bearer ENTERAPITOKENHERE"
headers = {
'Accept': 'application/vnd.heroku+json; version=3',
'Authorization': heroku_api_token
}
statecheck = requests.get("https://api.heroku.com/apps/rockosmodernapp/dynos/web.1",headers=headers).json()
print(statecheck)
if statecheck["state"] == "idle":
print("shutting down web app worker")
elif statecheck["state"] == "up":
print("app is still up, will check in 15 minutes to see if app is idle")
postheader = {
"Content-Type": "application/json",
"Accept": "application/vnd.heroku+json; version=3",
'Authorization': heroku_api_token
}
stopdynoobject = {
}
stopdyno = requests.post("https://api.heroku.com/apps/rockosmodernapp/dynos/web.1/actions/stop",headers=postheader)
print(stopdyno.reason)
它看起来像是要停止,然后立即重新启动:
2022-10-20T03:05:55.221896+00:00 heroku[web.1]: State changed from up to down
2022-10-20T03:05:56.368472+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2022-10-20T03:05:56.673413+00:00 heroku[web.1]: Process exited with status 143
2022-10-20T03:06:13.858381+00:00 heroku[web.1]: State changed from down to starting
此外, Jmeter 板仍显示Web工作进程正在运行:
1条答案
按热度按时间nom7f22z1#
我想出来了--使用Heroku的API中的Formation端点将Web工作者的数量改为0。这将关闭Heroku中的dyno,从而节省资金。