我有点困惑,因为 heroku API 中曾经有一种方法可以重新启动应用程序的进程。现在这个 API 似乎已被弃用,所有链接都指向https://devcenter.heroku.com/articles/platform-api-reference,我在其中找不到任何有关重启的信息(甚至是单词restart
本身)。
有人可以解释一下吗?我相信,除了显示日志之外,这也是开发人员最重要的 API 命令之一,因为您可以通过 heroku webui 完成大多数其他任务。
我有点困惑,因为 heroku API 中曾经有一种方法可以重新启动应用程序的进程。现在这个 API 似乎已被弃用,所有链接都指向https://devcenter.heroku.com/articles/platform-api-reference,我在其中找不到任何有关重启的信息(甚至是单词restart
本身)。
有人可以解释一下吗?我相信,除了显示日志之外,这也是开发人员最重要的 API 命令之一,因为您可以通过 heroku webui 完成大多数其他任务。
您可以使用 heroku platform-api来执行此操作。api有一个dyno重启方法。. 这是一个如何处理 rake 任务的示例。
首先,您需要设置凭据。从您的开发机器
$ heroku plugins:install heroku-cli-oauth
然后
$ heroku authorizations:create -d "Platform API token"
这将输出许多字段,包括一个令牌字段。制作令牌值的副本,例如它是 abc-def。然后
heroku config:set OAUTH_TOKEN=abc-def
在生产机器上设置 OAUTH_TOKEN 值。您的 rake 任务可能如下所示:
desc 'heroku_restart'
task heroku_restart: :environment do
heroku = PlatformAPI.connect_oauth(ENV['OAUTH_TOKEN'])
dynos = heroku.dyno.list(ENV['HEROKU_APP_NAME'])
heroku.dyno.restart(ENV['HEROKU_APP_NAME'], dynos[0]['name'])
end
这将重新启动测功机列表中的第一个测功机。现在提交此更改并部署到生产环境,您的 rake 任务已准备就绪。
您必须使用 Dyno 删除:https ://devcenter.heroku.com/articles/platform-api-reference#dyno-delete
如果您删除一次性测功机,它将不会重新启动,如果它在编队中定义,它将重新启动。
我们将改进文档,感谢您指出这个遗漏。
这通过终端对我有用(您需要先安装 Heroku CLI);
curl -n -X DELETE https://api.heroku.com/apps/<your app name/id>/dynos -H "Content-Type: application/json" -H "Accept: application/vnd.heroku+json; version=3"