【问题标题】:Broken pipe error and connection reset by peer 104对等体 104 断开管道错误和连接重置
【发布时间】:2015-10-10 11:15:38
【问题描述】:

我正在使用Bottle 服务器来实现我自己的服务器,使用的实现与简单的“hello world”here 相距不远,我自己的实现是(当然没有路由部分):
bottleApp =bottle.app() bottleApp.run(host='0.0.0.0',port=80, debug=true)

我的服务器一直没有响应,然后我进入浏览器:Connection reset by peer, broken pipe errno 32
日志给了我几乎完全相同的堆栈跟踪,例如question

这是我自己的日志:

到目前为止我尝试了什么,但没有成功:

  1. 用 try 包裹服务器运行行,除了类似的东西,显示here“mhawke”的答案。 这停止了​​日志中的错误消息,显然是因为我在except 子句中捕获了它们,但问题是当捕获这样的异常时,这意味着我们已经被抛出run 方法上下文,我想捕获它在某种程度上不会导致我的服务器崩溃。
    如果不触及bottle 的内部实现文件,我不知道它是否可能。

  2. 在服务器运行行之前添加:
    from signal import signal, SIGPIPE, SIG_DFL signal(SIGPIPE,SIG_DFL)
    正如here 所建议的那样,但它似乎对不出现 Broken pipe\connection reset 错误和服务器响应没有任何影响。

  3. 我还想尝试第二个答案here,但我不知道在bottle 服务器的上下文中该代码的位置。

【问题讨论】:

  • 要获得这方面的帮助,我认为您需要发布代码以获取问题的完整最小示例。
  • 除了我已经写过或提到过的,真的没有其他相关的代码了,服务器只是设置好了就忘了
  • 要调试它,我们需要能够运行您正在运行的完全相同的东西。

标签: python bottle broken-pipe sigpipe


【解决方案1】:

这听起来像是权限问题或防火墙。

如果你真的需要监听 80 端口,那么你需要使用特权帐户运行。此外,您可能需要为 tcp 流量打开端口 80。

我可以看到您使用的似乎是 Posix (Linux/Unix/OSx) 如果您发布您使用的操作系统,我可以编辑此答案以更具体地说明如何打开防火墙和执行特权命令 (可能是sudo,但谁知道呢)。

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 2018-05-28
    • 2012-02-22
    • 1970-01-01
    • 2011-03-01
    • 2013-08-25
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多