Python JSON RPC сервер с возможностью потоковой передачи - PullRequest
3 голосов
/ 11 ноября 2009

Я сталкивался с несколькими руководствами и пакетами по реализации JSON RPC-сервера Python, например ::10000

Все они хорошо выполняют свою работу в том смысле, что реализация сервера / приложения очень проста: вы просто возвращаете объект python в результате, а среда заботится о его сериализации. Однако это не подходит для моих нужд в основном потому, что я с нетерпением жду возможности сериализации, возможно, тысяч записей из базы данных, и такое решение потребовало бы от меня создания единственного объекта 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 голосов
/ 11 ноября 2009

если типичные JSON-RPC-структуры не позволяют эффективно создавать такие огромные данные, почему бы просто не использовать HTTP-сервер и возвращать данные JSON, чтобы вы могли передавать и читать потоковые данные, хорошо, что вы можете даже Gzip это для более быстрой передачи, и вы сможете использовать много стандартных серверов, например, apache.

...