如何从Google App Engine的urlfetch中获得部分结果?

时间:2015-02-10 12:44:35

标签: google-app-engine streaming urlfetch

当我使用google.appengine.api.urlfetch.fetch(或带有make_rpc的异步变体)来获取稳定流式传输数据的网址时,过了一会儿,我会按预期获得google.appengine.api.urlfetch_errors.DeadlineExceededError。由于它是我想要采样的流,因此将deadline设置为更高的值无法提供帮助,除非流完成(我不希望发生这种情况)。

似乎没有可能获得部分下载的结果。至少API没有提供任何东西。是否可能

  • 请求下载的部分
  • 或者只是要求下载一定数量的数据(因为我可以估算流的费率)?

[澄清:由于它是一个流,带有Range标头的请求将由200 OK而非206 Partial Content回复。]

1 个答案:

答案 0 :(得分:4)

在致电urlfetch.fetch时,您可以设置HTTP标头。 Range标头是您在HTTP中指定部分下载请求的方式:

resp = urlfetch.fetch(
    url=whatever,
    headers={'Range': 'bytes=100-199'})

如果那些是您想要的100个字节。对于这样的部分下载等,您获得的HTTP状态代码应为206(不是GAE特定的)。有关详细信息,请参见http://en.wikipedia.org/wiki/Byte_serving