1

次の行に沿って書かれた単純な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:

これは、データベースのサイズに完全に依存するわけではないことがわかりました。エラーメッセージが表示される場合と表示されない場合があります。この IncompleteRead 問題の原因を誰か教えてもらえますか?

4

0 に答える 0