def read(self, buf_len):
"""
Implementation note: due to a constraint of the requests library, the
buf_len that is used the first time this method is called will cause
all future requests to ``read`` to have the same ``buf_len`` even if
a different ``buf_len`` is passed in on subsequent requests.
"""
if self._iter is None: # lazy load response body iterator
method = self.input_spec.get('method', 'GET').upper()
headers = self.input_spec.get('headers', {})
params = self.input_spec.get('params', {})
req = requests.request(
method, self.input_spec['url'], headers=headers, params=params,
stream=True, allow_redirects=True)
req.raise_for_status() # we have the response headers already
self._iter = req.iter_content(buf_len, decode_unicode=False)
try:
return six.next(self._iter)
except StopIteration:
return b''
评论列表
文章目录