0

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

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

这是我自己的日志:
断管堆栈跟踪
对等堆栈跟踪重置连接

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

  1. 用 try except 包装服务器运行行,例如,此处显示 了“mhawke”的答案。这停止了​​日志中的错误消息,显然是因为我在except子句中捕获了它们,但问题是当捕获这样的异常时,这意味着我们已被抛出run方法上下文,我想以某种方式捕获它不会导致我的服务器崩溃。
    我不知道它是否可能不触及bottle.

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

  3. 我还想在这里尝试第二个答案,但我不知道在bottle服务器上下文中的何处定位此代码。

4

1 回答 1

0

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

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

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

于 2015-10-12T03:41:49.720 回答