java - Heroku 进程应该始终保持运行状态,但是当它被 ping 到时,它会崩溃并出现 H20 错误

标签 java heroku gradle intellij-idea get

所以我有一个在 Heroku 中运行的 Java 应用程序,它总是在监听某些内容。它不应该被 ping 到,但如果被 ping 到,它会返回一个 H20 错误,因为该过程永远不会结束。我怎样才能防止这种情况发生?

我尝试监听 get 调用:

get("", new Route() {
        @Override
        public Object handle(Request request, Response response) throws Exception {
            return "Hello";
        }
  });

但后来意识到它将结束整个过程,这意味着在我执行 heroku restart 之前它不会再运行,因为该过程在我发布后立即启动。

如何让服务器忽略 ping,而不结束进程本身?

为了清楚起见,这应该是一个在特定聊天中监听命令的文 native 器人。

最佳答案

H20是应用程序启动超时。
对于 web 进程类型,Heroku 要求您绑定(bind) $PORT 处指定的端口。如果 75 秒后,您的进程没有绑定(bind)到该端口,则它被认为启动时间太长,因此被杀死。

如果您的机器人不打算监听 HTTP 请求,您可以解决此问题,将进程类型名称从 web 更改为 Procfile 中的任何其他名称。 .

关于java - Heroku 进程应该始终保持运行状态,但是当它被 ping 到时,它会崩溃并出现 H20 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146184/

相关文章:

gradle - 为什么在 Gradle 中使用 'tasks' 任务时看不到所有任务?

java - Jena 结果采用 UTF-8 格式

java - 关于如何导入google-api-translate-java.jar的问题

php - 有没有办法在 Heroku 中使用 PHP WebSocket?,默认情况下似乎只支持其他技术

mongodb - Heroku 没有预编译我的 Assets 来为我的应用程序准备 Assets 管道

android - 减小 APK 大小 - 仅为特定平台构建 so 文件

java - 每次单击按钮时计时器都会加快速度

java - readAllBytes()。文件系统异常 : The process cannot access the file because it is being used by another process

heroku - 处理 erl_child_setup 中的信号

android - Android Studio-Gradle同步连接超时