Python, httplib2, 意外错误:socket.error

0 投票
1 回答
786 浏览
提问于 2025-04-18 07:34

我正在使用 Python 2.4.3 创建一个 HTTP 服务器,目标是: (1) 接收一个通过 'POST' 发送的消息,(2) 生成一个回复消息,(3) 将这个回复消息发送回发送者。

步骤 (1) 和 (2) 进行得很顺利,但步骤 (3) 有时会失败……看起来是使用的 httplib2.Http() 这个东西有线程问题。

当失败时输出的内容是:

Unexpected error: socket.error
10.96.5.127 - - [26/May/2014 07:55:39] code 500, message Error processing in do_POST
10.96.5.127 - - [26/May/2014 07:55:39] "POST /exchange/PERFOR HTTP/1.1" 500 -

这是我的代码(导入的部分没有显示):

class PostHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        try:
            # (1) Message from sender is received by server : OK
            content_len = int(self.headers.getheader('content-length'))
            msg = self.rfile.read(content_len)
            self.send_response(200)
            self.end_headers()
            # (2) Received message is used to make the 'smsg' message to be send back.
            # This goes OK so I don't need to show the code.
            # (3) Now 'smsg' shoud be send back to sender
            headers = {"Content-type" : "text/xml" , "Accept": "text/xml" , "User-Agent" :  "haboob/5.9.0.0.4 build-4857" , "SOAPAction": "\"ebXML\"" }
            url = 'http://mynode.local:4080/destination'
            http = httplib2.Http()
            response, content = http.request(url, method="POST", headers=headers, body=smsg)
        except :
            print "Unexpected error:", sys.exc_info()[0]
            self.send_error(500,'Error processing in do_POST')
        return

class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    """Handle requests in a separate thread."""

if __name__ == '__main__':
    try:
        port=4080
        server = ThreadedHTTPServer(('',port), PostHandler) 
        server.request_queue_size=60
        server.serve_forever()
    except KeyboardInterrupt:
        print ('^C received, shutting down server')
        server.socket.close()

任何帮助都会非常感谢!

1 个回答

暂无回答

撰写回答