通过Heroku API更改测力计类型

oaxa6hgo  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(122)

我有一个应用程序在Heroku运行;我正在使用Heroku scheduler运行一个python脚本,该脚本使用python API(在this answer之后)在一天中的特定时间缩放dynos的数量:

import heroku
cloud = heroku.from_key(os.environ.get('HEROKU_API_KEY'))
app = cloud.apps['myapp']
webproc = app.processes['web']
webproc.scale(1)

我的问题是:是否有API调用来更改Dyno * 类型 *?2例如,将其从“标准1X”更改为“标准2X”或更改为“业余爱好”。
谢谢

e7arh2l6

e7arh2l61#

与Heroku支持人员的交谈已经确认pythonAPI没有执行此操作的命令;因此,我不得不将以下脚本添加到应用程序中(this answer之后):

#!/bin/bash

curl -s https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz | tar xz
mv heroku-client/* .
rmdir heroku-client
PATH="bin:$PATH"

heroku dyno:type hobby --app MYAPP

根据需要将hobby更改为standard-1xstandard-2x

ifsvaxew

ifsvaxew2#

不是通过Python API(已弃用),而是通过常规HTTP API,您可以执行以下操作:

requests.patch(
    f"https://api.heroku.com/apps/{APP_ID_OR_NAME}/formation",
    json={"updates": [{"size": DYNO_TYPE, "type": "web"}]},
    headers={
        "Content-Type": "application/json",
        "Accept": "application/vnd.heroku+json; version=3",
        "Authorization": f"Bearer {TOKEN}",
    },
)

这里使用的是requests-库。
我相信dyno大小更新适用于所有进程类型--这里我只列出了web--至少当从“free”到“hobby”时是这样。否则,您只需将其他进程类型添加到updates-list中。
请参阅Heroku API文档:https://devcenter.heroku.com/articles/platform-api-reference#formation-batch-update

相关问题