使用httpc lib将大型http响应流到Erlang中的磁盘
使用httpc lib将大型http响应流到Erlang中的磁盘,erlang,streaming,otp,httpc,Erlang,Streaming,Otp,Httpc,httpc:request(get,{URL,[]},[],[{stream,FilePath}])返回{ok,saved_to_file},即使远程web服务在响应流传输过程中中途终止。我检查了一下,磁盘上的内容丢失了一大堆数据。这是一个已知的怪癖并且是预期的吗?我提交了一份报告,OTP团队的回答表明这是一个bug(至少对于当前的HTTP规范): 我认为这是因为客户端具有向后兼容性 服务器将关闭连接以指示所有数据 已经发送了。也许这应该只对老客户有条件 HTTP协议的版本,或者它可能会被删除。
httpc:request(get,{URL,[]},[],[{stream,FilePath}])
返回{ok,saved_to_file}
,即使远程web服务在响应流传输过程中中途终止。我检查了一下,磁盘上的内容丢失了一大堆数据。这是一个已知的怪癖并且是预期的吗?我提交了一份报告,OTP团队的回答表明这是一个bug(至少对于当前的HTTP规范):
我认为这是因为客户端具有向后兼容性
服务器将关闭连接以指示所有数据
已经发送了。也许这应该只对老客户有条件
HTTP协议的版本,或者它可能会被删除。。。
-英格拉·安德顿·安丁
我用的是OTP-22.1。我也尝试过
{sync,false}
选项,但没有什么不同。你可以使用牛仔要求
,它对我有效。