2015-02-10 2 views
0

Когда я использую google.appengine.api.urlfetch.fetch (или асинхронный вариант с make_rpc), чтобы получить URL-адрес, который стабильно передает данные, через некоторое время я получу google.appengine.api.urlfetch_errors.DeadlineExceededError, как и ожидалось. Поскольку это поток, который я хочу попробовать, установка deadline на более высокое значение никогда не сможет помочь, если поток не завершится (чего я не ожидаю).Как получить частичные результаты от urlfetch Google App Engine?

Кажется, что нет возможности получить частично загруженный результат. По крайней мере, API ничего не предлагает. Можно ли

  • либо запросить Загруженную Часть
  • или задать только для определенного количества данных (так как я могу оценить скорость потока, в) быть загружен?

[Разъяснение:. Так как это поток, запросы с Range заголовок будет отвечено с 200 OK и не 206 Partial Content]

ответ

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.

Смежные вопросы