使用 httpc lib 将大型 http 响应流式传输到 Erlang 中的磁盘
Posted
技术标签:
【中文标题】使用 httpc lib 将大型 http 响应流式传输到 Erlang 中的磁盘【英文标题】:Stream large http response to disk in Erlang with httpc lib 【发布时间】:2020-08-07 02:57:19 【问题描述】:httpc:request(get, URL, [], [], [stream, FilePath])
会返回 ok, saved_to_file
,即使远程 Web 服务在流式传输响应时中途终止。我检查了磁盘上的内容是否丢失了一大堆数据。这是一个已知的怪癖和预期吗?
【问题讨论】:
我正在使用 OTP-22.1。我也尝试过sync, false
选项,但没有任何区别。
你可以使用cowboy_req
,它对我有用。
【参考方案1】:
我提交了bug-report,OTP 团队的答复表明这是一个错误(至少对于当前的 HTTP 规范而言):
我认为这是由于客户端具有向后兼容性 与将关闭连接以指示所有数据的服务器 已经发送了。可能这应该只针对旧的 HTTP 协议的版本,或者它可能会被丢弃...... - Ingela Anderton Andin
【讨论】:
以上是关于使用 httpc lib 将大型 http 响应流式传输到 Erlang 中的磁盘的主要内容,如果未能解决你的问题,请参考以下文章