Python xmlrpclib引发IncompleteRead错误

时间:2014-12-02 11:29:06

标签: python python-2.7 xml-rpc httplib xmlrpclib

我有一个简单的xmlrpc服务器,它是沿着

行写的
server = SimpleXMLRPCServer(('127.0.0.1', 8000),allow_none=True)
server.register_function(self.fetch_buyer_data,'"fetch_buyer_data")
...
...
server.serve_forever()

这不是完整的代码,但你明白了(希望如此)!

在同一个服务器脚本中,我有一个函数可以读取sqlite3数据库的内容并返回所有数据。像这样:

def fetch_buyer_data(self, projectname):
    conn = sqlite3.connect(...)
    # read data from sqlite3 database and save it into list
    conn.close()
    return datalist

我使用以下来自客户端的代码来访问上述功能。

proxy = xmlrpclib.ServerProxy("http://%s:%s/" %(hostip,hostport),allow_none=True)
data = proxy.fetch_buyer_data(SELECTED_PROJECT)

直到sqlite3数据库中的数据变得更大(不是很大但像几兆字节!),这一切都很好,我不断收到以下错误信息!

Traceback (most recent call last):
  File "C:\Custom\src\Client\client.py", line 178, in show_user_page
    userpage = UserPage()
  File "C:\Custom\src\Client\client.py", line 2371, in __init__
    self.update_buyer_table()
  File "C:\Custom\src\Client\client.py", line 6106, in update_buyer_table
    data = proxy.fetch_buyer_data(SELECTED_PROJECT)
  File "C:\Python27\Lib\xmlrpclib.py", line 1224, in __call__
    return self.__send(self.__name, args)
  File "C:\Python27\Lib\xmlrpclib.py", line 1578, in __request
    verbose=self.__verbose
  File "C:\Python27\Lib\xmlrpclib.py", line 1264, in request
    return self.single_request(host, handler, request_body, verbose)
  File "C:\Python27\Lib\xmlrpclib.py", line 1297, in single_request
    return self.parse_response(response)
  File "C:\Python27\Lib\xmlrpclib.py", line 1453, in parse_response
    stream = GzipDecodedResponse(response)
  File "C:\Python27\Lib\xmlrpclib.py", line 1204, in __init__
    self.stringio = StringIO.StringIO(response.read())
  File "C:\Python27\Lib\httplib.py", line 548, in read
    s = self._safe_read(self.length)
  File "C:\Python27\Lib\httplib.py", line 649, in _safe_read
    raise IncompleteRead(''.join(s), amt)
httplib.IncompleteRead: IncompleteRead(8031 bytes read, 1732 more expected)

注意:我已检查服务器上的其他注册功能是否正常工作。所以,我可以排除连接问题(ip,端口等)。

什么是收到此错误消息?我该如何克服这个问题?

我在windows xp sp3上使用python 2.7。

更新1:

我发现这并不完全取决于数据库的大小。有时它会给我错误信息,有时则不会。谁能告诉我这个不完整的阅读问题是什么?

0 个答案:

没有答案