提问人:Kache 提问时间:1/18/2023 最后编辑:Kache 更新时间:1/18/2023 访问量:23
如何连接我不以流式方式控制的 read() 和 write() 调用?
How to connect read() and write() calls that I don't control in a streaming manner?
问:
假设我想通过接受可读文件 obj 的东西来流式传输一些 json,例如最终执行以下操作的 SFTP 客户端:
size = 0
while True:
data = reader.read(BUFF_LEN)
writer.write(data)
size += len(data)
if len(data) == 0:
break
return size
但我的数据源是 json
的“流式处理 API”,它急切地迭代:
for chunk in iterable:
fp.write(chunk)
它实际上并不像生成器那样“流式传输”(我希望它只是返回可迭代对象)。
我只能控制传入的“I/O 对象”,而不能控制 read()/write() 调用。是否可以将它们与一些中间缓冲区“流连接”,这些缓冲区不会将整个序列化有效负载保存在内存中?没有线程怎么样?
class MyBuffer: # what should this be
def read(self, len):
pass
def write(self, data):
pass
rw_connection = MyBuffer()
json.dump(my_large_data, rw_connection) # uncontrollable writes
with sftp_impl() as sftp:
sftp.putfo(rw_connection, 'my_filename.json') # uncontrollable reads
答: 暂无答案
评论
json