支持流的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对象作为结果,框架会处理将其转换为JSON格式的工作。不过,这种方法不太适合我的需求,主要是因为我想要从数据库中序列化可能成千上万的记录,而这种解决方案要求我创建一个包含所有记录的单一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游标这样的可迭代对象,并实时进行序列化?
1 个回答
2
如果一般的JSON-RPC框架不能有效地处理这么大的数据,那为什么不直接用一个HTTP服务器来返回JSON数据呢?这样你就可以流式传输和读取数据。更好的是,你还可以把数据进行gzip压缩,这样传输会更快。而且你还可以使用很多标准的服务器,比如Apache。