Heroku进程以状态0退出,但其dyno仍然“崩溃”

时间:2016-12-13 01:08:45

标签: ruby heroku

我有一个写在ruby上的报废脚本,在一个工作器dyno里面的heroku上运行。即使脚本运行顺利并以状态0退出,heroku仍然告诉我dyno崩溃了:

2016-12-13T00:59:10.695566+00:00 heroku[spider.1]: State changed from up to crashed
2016-12-13T00:59:10.683166+00:00 heroku[spider.1]: Process exited with status 0

当脚本结束时,我该怎么做才能使dyno正确停止?

感谢。

3 个答案:

答案 0 :(得分:2)

作为你的dyno阵型的一部分运行的Dynos预计将持续运行。应该适合您的架构是:

  1. 以命令的形式添加刮刀(例如,设置了可执行位的脚本),您可以通过heroku run运行,例如heroku run -r production scrape
  2. 添加一个从第1点运行命令的脚本,例如您可以使用the platform APIheroku run -r production scrape
  3. 从Heroku调度程序中调用第2点中的脚本。
  4. 这应该是一个很好的起点。您需要处理一些极端情况,例如确保一次只能运行一次刮擦(如果这是您的要求)。

答案 1 :(得分:0)

根据heroku's documentation判断,你不能。如果dyno停止,它会被视为压碎。

  

dyno“crash”表示源自该进程的任何事件   在dyno中运行导致dyno停止。那包括   进程以退出代码0(或任何其他退出代码)退出

答案 2 :(得分:0)

我还相信您可以在代码中通过Heroku API停止dyno。有关更多信息,请参见https://devcenter.heroku.com/articles/platform-api-reference#dyno-stop