3
我所遇到的一些指南和包上實現的Python JSON RPC服務器,能力如:Python的JSON RPC服務器以流
- http://json-rpc.org/wiki/python-json-rpc
- http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/552751
- http://pythonpaste.org/webob/jsonrpc-example.html
它們在服務器/應用程序實現非常簡單的意義上做得很好,你只需返回python對象,並且框架採用c正在序列化它。但是,這並不適合我的需要,主要是因爲我期待從數據庫中序列化數千條記錄,並且這種解決方案需要我創建一個包含所有記錄的單個python對象,並將其作爲結果返回。
我正在尋找的理想解決方案將涉及一個框架,該框架可以爲應用程序提供一個流以編寫響應,以及一個JSON編碼器,可以動態編碼迭代器(本例中爲pyodbc的光標)像這樣:
def process(self, request, response):
// retrieve parameters from request.
cursor = self.conn.cursor()
cursor.execute(sql) // etc.
// Dump the column descriptions and the results (an iterator)
json.dump(response.getOut(), [cursor.description, cursor])
有人點我到一個服務器框架,可以提供給我一個流寫入和JSON序列化框架,能夠處理這種迭代的pyodbc光標和序列化的飛行。
感謝您的建議,我會在稍後探討此選項。現在,我不會立即獲得像這樣流式傳輸json的好處,因爲兩個原因: - 我還沒有找到一個json庫,它可以讓我即時流式傳輸 - 即使我能夠從python ,客戶端無法在沒有整個json字符串的情況下將其反序列化,因此它不會立即開始使用它。 我將不得不做更進一步的分析,以便更好地鍛鍊。 – haridsv
你可以一個一個地轉儲json對象 –
我認爲JSON規範要求在頂層有一個容器,所以這不起作用,除非你使用的JSON庫支持這個概念。例如,在我嘗試的兩個R庫中,有一個給出了一個解析器,它可以在實例化後立即爲您提供對象(addData()後跟getObject()),但都給出toJSON(),解析失敗這種字符串。 – haridsv