支持流的Python JSON RPC服务器

3 投票
1 回答
4063 浏览
提问于 2025-04-15 15:53

我遇到了一些关于如何实现Python JSON RPC服务器的指南和工具,比如:

这些资源都做得很好,因为它们的服务器或应用程序实现非常简单,你只需要返回一个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。

撰写回答