本文整理汇总了Python中requests.Response.headers['content-length']方法的典型用法代码示例。如果您正苦于以下问题:Python Response.headers['content-length']方法的具体用法?Python Response.headers['content-length']怎么用?Python Response.headers['content-length']使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类requests.Response
的用法示例。
在下文中一共展示了Response.headers['content-length']方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: send
# 需要导入模块: from requests import Response [as 别名]
# 或者: from requests.Response import headers['content-length'] [as 别名]
def send(self, request, stream=False, timeout=None, **kwargs):
parsed_url = urllib.parse.urlparse(request.url)
file_path = parsed_url.path
# Strip the leading slash, if present.
if file_path.startswith('/'):
file_path = file_path[1:]
try:
self.conn = self.get_connection(parsed_url.netloc, timeout)
except ConnectionRefusedError as exc:
# Wrap this in a requests exception.
# in requests 2.2.1, ConnectionError does not take keyword args
raise requests.exceptions.ConnectionError() from exc
resp = Response()
resp.url = request.url
try:
size = self.conn.size(file_path)
except error_perm:
resp.status_code = 404
return resp
if stream:
# We have to do this in a background thread, since ftplib's and requests' approaches are the opposite:
# ftplib is callback based, and requests needs to expose an iterable. (Push vs pull)
# When the queue size is reached, puts will block. This provides some backpressure.
queue = Queue(maxsize=100)
done_sentinel = object()
def handle_transfer():
# Download all the chunks into a queue, then place a sentinel object into it to signal completion.
self.conn.retrbinary('RETR ' + file_path, queue.put)
queue.put(done_sentinel)
Thread(target=handle_transfer).start()
def stream(amt=8192, decode_content=False):
"""A generator, yielding chunks from the queue."""
# We maintain a buffer so the consumer gets exactly the number of bytes requested.
buffer = bytearray()
while True:
data = queue.get()
if data is not done_sentinel:
buffer.extend(data)
if len(buffer) >= amt:
result = buffer[:amt]
buffer = buffer[amt:]
yield result
else:
if buffer:
yield buffer
return
Raw = namedtuple('raw', 'stream')
raw = Raw(stream)
resp.status_code = 200
resp.raw = raw
resp.headers['content-length'] = size
resp.close = lambda: self.conn.close()
return resp
else:
# Not relevant for Ubuntu Make.
raise NotImplementedError