def send(self, stream=False, timeout=None, verify=True,
cert=None, proxies=None):
request = self.request
connect_timeout, self.read_timeout = parse_timeout(timeout)
self.stream_body = stream
# set connect timeout
with stack_context.ExceptionStackContext(self._handle_exception):
if connect_timeout:
self._timeout = self.io_loop.call_later(connect_timeout,
stack_context.wrap(functools.partial(
self._on_timeout, 'while connecting')))
# set proxy related info
proxy = select_proxy(request.url, proxies)
self.headers = request.headers.copy()
if proxy:
proxy = prepend_scheme_if_needed(proxy, 'http')
parsed = urlparse(proxy)
scheme, host, port = parsed.scheme, proxy, parsed.port
port = port or (443 if scheme == 'https' else 80)
self.start_line = RequestStartLine(request.method, request.url, '')
self.headers.update(get_proxy_headers(proxy))
else:
host, port = None, None
self.start_line = request.start_line
self.tcp_client.connect(
request.host, request.port,
af=request.af,
ssl_options=self._get_ssl_options(request, verify, cert),
max_buffer_size=self.max_buffer_size,
source_ip=host, source_port=port,
callback=self._on_connect)
评论列表
文章目录