0

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

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

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

我尝试了以下 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 或应用程序,直到我再次手动启动它?

4

2 回答 2

1

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

有关详细答案,请查看

于 2020-10-09T07:20:38.110 回答
0

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

停止测功机

正确停止后重新启动以再次启动它。

重新启动测功机

于 2020-09-13T04:53:55.033 回答