Python Bottle框架变得无响应

时间:2014-01-31 16:51:28

标签: python web-services python-2.7

我在使用python的Bottle框架(http://bottlepy.org/docs/dev/index.html)来托管网页时遇到了一些问题。它似乎在一段时间内工作正常,但现在我得到以下错误,它无法显示网页。脚本不会崩溃但网页变得无法响应。

有什么建议吗?

 Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 651, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
    self.wfile.close()
  File "/usr/lib/python2.7/socket.py", line 279, in close
    self.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

我也看到以下错误。但我猜这是在请求不存在的网页/对象的请求时发生的 -

Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "/usr/lib/python2.7/wsgiref/simple_server.py", line 116, in handle
    self.raw_requestline = self.rfile.readline()
  File "/usr/lib/python2.7/socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 104] Connection reset by peer

1 个答案:

答案 0 :(得分:1)

这个问题似乎与How to prevent errno 32 broken pipe?

相似

您收到了SIGPIPE,这可能是由于尝试写入已关闭的套接字。您可以尝试使用类似的方法来处理异常:

    except socket.error, e:
        if isinstance(e.args, tuple):
            print "Errno: %d" % e[0]
            if e[0] == errno.EPIPE:
               # Caught a peer disconnection
               print "Remote host disconnected"