【问题标题】:Heroku run console get "Timeout awaiting process"Heroku 运行控制台得到“超时等待进程”
【发布时间】:2017-03-11 07:18:15
【问题描述】:

最近无法将控制台与 Heroku 连接:

lsoave@ubuntu:~/rails/github/gitwatcher$ heroku run console
Running console attached to terminal... 
Timeout awaiting process
lsoave@ubuntu:~/rails/github/gitwatcher$ 

它发生在其他人身上吗?

【问题讨论】:

    标签: console heroku


    【解决方案1】:

    我在意大利的 ISP FastWeb 上遇到了同样的问题。根据我的谷歌搜索,他们似乎阻止了端口 5000。

    为了暂时解决这个问题,我正在运行以下命令:

    heroku run:detached rake db:migrate
    

    这告诉它无需等待连接到我的机器上的 5000 端口即可运行。 然后,您可以检查刚刚启动的进程的日志。 (heroku 命令会在你运行后告诉你):

    heroku logs -p run.1
    

    这告诉它输出正在运行的进程的日志。 但是我发现即使我的进程仍在运行,logs 命令也正在退出。 为了解决这个问题,如果您想“跟踪”日志,可以添加“-t”:

    heroku logs -p run.1 -t   
    

    当您在日志中看到类似内容时,您将知道您的流程已完成:

    2012-10-14T15:36:41+00:00 heroku[run.1]: Process exited with status 0
    2012-10-14T15:36:41+00:00 heroku[run.1]: State changed from up to complete
    

    我相信有人可以编写一个脚本

    1. 使用run:detached 运行给定的heroku 命令
    2. 检查输出以确定其进程名称是什么(run.1、run.2 等)
    3. 运行 heroku logs -p run.1 -t 并显示输出
    4. 当看到类似State changed from up to complete 的内容时退出日志进程

    【讨论】:

    • 我联系了 Heroku 支持,他们能够进一步帮助我,因此不需要解决方法。 Heroku 的道具。
    • 感谢来自意大利(Fastweb 用户...)的解决方法。如何避免这种变通方法?我想使用其他命令,例如run 等。他们为你做了什么?
    • OP 想要运行交互式控制台,因此很遗憾,此解决方案不适用于他们的用例。
    • 确实如此 - 这不适用于交互式控制台。不过,它“在紧要关头”对我有用,因为我通常只需要运行一两个命令。
    • @Taytay 我刚收到 Heroku 发来的一条消息,上面写着:“你不是第一个问这个问题的人。不幸的是,这不是我们能做的。我们一次性的测功机服务是平台范围的,这意味着它不能绑定到专门用于应用程序的其他端口。” 所以这不能完成
    【解决方案2】:

    发件人:http://devcenter.heroku.com/articles/oneoff-admin-ps

    heroku 运行进程在端口 5000 上打开与 Heroku 的连接。如果 您的本地网络或 ISP 阻止了端口 5000,或者您是 遇到连接问题,您将看到类似于以下内容的错误:

    $ heroku run rails console
    Running rails console attached to terminal... 
    Timeout awaiting process
    

    您可以通过尝试直接连接来测试您与 Heroku 的连接 使用 telnet 到rendezvous.heroku.com 到端口5000。一个成功的 会话将如下所示:

    $ telnet rendezvous.heroku.com 5000
    Trying 50.19.103.36...
    Connected to ec2-50-19-103-36.compute-1.amazonaws.com.
    Escape character is '^]'. 
    

    如果你没有得到这个输出,你的电脑被阻止了 访问我们的服务。我们建议联系您的 IT 部门, ISP 或防火墙制造商来解决这个问题。

    【讨论】:

    • 您可以建议将“运行”配置为通过任何列入白名单的端口(如 22 或通过 Web UI)访问的任何其他方式(除了隧道)吗?
    • 5000 端口没有为我阻止,但我仍然收到“超时等待进程”。
    • @Arcolye,你好!你弄清楚这个问题了吗?看来我没有阻塞5000端口,但我也无法连接。你有没有解决过这个问题?谢谢。
    • Heroku 是如何工作的以及它使用哪些端口来执行哪些命令非常困难:) Git 推送使用 22(因为 Heroku 不仅支持 https 推送)。 Heroku pg:在其他东西上运行,基于 pg 本身。 Heroku 运行通过端口 5000。最后,Heroku 登录、注销、日志、运行:分离等似乎工作,所以我猜它们在端口 80 或 443 上运行。还是我弄错了?
    【解决方案3】:

    有一种方法可以绕过此限制,方法是执行您将使用“heroku run ...”直接作为系统调用执行的命令。

    对于这个 heroku 命令: heroku 运行 rake db:migrate 可以用 Ruby 拨打电话 system("rake db:migrate")

    这个调用可以作为一些 HTTP GET 请求的结果 - 你最好通过某种方式保护它,这样陌生人就无法访问它。

    这不是一个好方法 - 但当你别无选择时 - 它会起作用。

    【讨论】:

      【解决方案4】:

      我在 ISP FastWeb 上遇到了同样的问题,它是意大利的 ISP。

      解决问题最简单的方法是在使用heroku run (something)时设置VPN

      我个人使用Tunnel Bear,免费为您提供 0.5GB 的互联网流量

      【讨论】:

        【解决方案5】:

        我刚刚成功连接到 Heroku 上的控制台

        是所有应用程序还是一个应用程序?我建议检查您的 heroku gem 是否是最新的,您可以运行其他命令,例如 heroku ps,通过 heroku restart 重新启动您的应用程序 - 如果您尝试过这些,请联系 Heroku 支持,因为您的应用程序有问题.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多