【问题标题】:How to stop a Heroku dyno using the Heroku API so it doesn't restart如何使用 Heroku API 停止 Heroku dyno 使其不会重新启动
【发布时间】:2020-12-31 03:54:53
【问题描述】:

如何使用 Heroku API 完全停止 Heroku dyno 使其不会重新启动?

我已将 Heroku 设置为运行 Python 脚本,该脚本始终循环且从不退出以检查传感器。这个 main.py 脚本通过我的 Procfile 作为 Dyno 工作者运行。现在,它总是按预期运行。它甚至会在崩溃时重新启动,这对这个应用程序也很有帮助。

使用Heroku API,我希望能够完全停止这个过程。这不会经常发生,只是一个故障安全终止开关。我可以通过登录 Heroku 并单击“资源”选项卡中的编辑按钮并关闭工作人员来停止 dyno 工作人员。但是,我想通过 API 关闭 Worker。

我尝试了以下 API 调用(通过 Postman),它们都停止了当前进程,但几秒钟后,Heroku 再次启动了 worker。

停止当前的 Dyno

POST https://api.heroku.com/apps/<app_id>/dynos/worker.1/actions/stop

删除/重新启动应用中的所有测功机

DELETE https://api.heroku.com/apps/<app_id>/dynos

另外,我可以将应用程序置于维护模式,但这只会停止 HTTP 流量,而不是 Dynos

PATCH https://api.heroku.com/apps/<app_id>
with payload of {"maintenance":true}

一个选项是完全删除应用程序,但这对我来说有点过分,因为它还会删除所有日志文件,并且重新设置它会很痛苦。

DELETE https://api.heroku.com/apps/<app_id>

有没有办法通过 API 完全停止 Dyno 或应用程序,直到我再次手动启动它?

【问题讨论】:

    标签: python heroku heroku-api


    【解决方案1】:

    似乎您正在阻止工人而不是测功机。您必须提供测功机 ID。

    Stoping dyno

    正确停止后重新启动即可再次启动。

    restarting the dyno

    【讨论】:

    • 您不必提供测功机 ID。您还可以使用文档中显示的 dyno 名称:dyno_id_or_name。我试过两者都没有区别。在这两种情况下,测功机都会在停止后重新启动。
    【解决方案2】:

    您必须使用 Heroku Formation API 来扩展和缩减进程,它不会自行重启应用程序。

    详细答案请查看this

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2014-10-26
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多