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