def raw_fetch(self, headers, body): client = SimpleAsyncHTTPClient(self.io_loop) conn = RawRequestHTTPConnection( self.io_loop, client, httpclient.HTTPRequest(self.get_url("/")), None, self.stop, 1024 * 1024 ) conn.set_request(b("\r\n").join(headers + [utf8("Content-Length: %d\r\n" % len(body))]) + b("\r\n") + body) response = self.wait() client.close() response.rethrow() return response
def raw_fetch(self, headers, body): client = SimpleAsyncHTTPClient(self.io_loop) conn = RawRequestHTTPConnection( self.io_loop, client, httpclient.HTTPRequest(self.get_url("/")), None, self.stop, 1024 * 1024) conn.set_request( b("\r\n").join(headers + [utf8("Content-Length: %d\r\n" % len(body))]) + b("\r\n") + body) response = self.wait() client.close() response.rethrow() return response
def raw_fetch(self, headers, body): client = SimpleAsyncHTTPClient(self.io_loop) conn = RawRequestHTTPConnection( self.io_loop, client, httpclient._RequestProxy(httpclient.HTTPRequest(self.get_url("/")), dict(httpclient.HTTPRequest._DEFAULTS)), None, self.stop, 1024 * 1024, Resolver(io_loop=self.io_loop)) conn.set_request(b"\r\n".join( headers + [utf8("Content-Length: %d\r\n" % len(body))]) + b"\r\n" + body) response = self.wait() client.close() response.rethrow() return response
def raw_fetch(self, headers, body): client = SimpleAsyncHTTPClient(self.io_loop) conn = RawRequestHTTPConnection( self.io_loop, client, httpclient._RequestProxy( httpclient.HTTPRequest(self.get_url("/")), dict(httpclient.HTTPRequest._DEFAULTS)), None, self.stop, 1024 * 1024, Resolver(io_loop=self.io_loop)) conn.set_request( b"\r\n".join(headers + [utf8("Content-Length: %d\r\n" % len(body))]) + b"\r\n" + body) response = self.wait() client.close() response.rethrow() return response
class AsyncHandler: def __init__(self, link: str, loop: IOLoop = None, timeout: int = 50): self.link = link self.client = SimpleAsyncHTTPClient(loop) self.timeout = timeout if loop is None: self.loop = IOLoop.current(False) else: self.loop = loop self.header_only = False def get_response(self, header_only=False): self.header_only = header_only # result = self.inner_get_response() result = self.loop.run_sync(self.inner_get_response) self.client.close() return result @gen.coroutine def inner_get_response(self) -> (int, dict, str): method = "GET" if self.header_only: method = "HEAD" try: req = HTTPRequest( self.link, headers=WebRequestCommonHeader.get_html_header(), request_timeout=self.timeout, follow_redirects=True, method=method, ) response = yield self.client.fetch(req) # self.client.close() return response.code, response.headers, response.body except HTTPError as ex: result = ex.response # self.loop.stop() return result.code, None, "" except: # self.loop.stop() return 999, None, "" finally: pass
class AsyncHandler: def __init__(self, link: str, loop: IOLoop = None, timeout: int = 50): self.link = link self.client = SimpleAsyncHTTPClient(loop) self.timeout = timeout if loop is None: self.loop = IOLoop.current(False) else: self.loop = loop self.header_only = False def get_response(self, header_only=False): self.header_only = header_only #result = self.inner_get_response() result = self.loop.run_sync(self.inner_get_response) self.client.close() return result @gen.coroutine def inner_get_response(self) -> (int, dict, str): method = "GET" if self.header_only: method = "HEAD" try: req = HTTPRequest(self.link, headers=WebRequestCommonHeader.get_html_header(), request_timeout=self.timeout, follow_redirects=True, method=method) response = yield self.client.fetch(req) #self.client.close() return response.code, response.headers, response.body except HTTPError as ex: result = ex.response #self.loop.stop() return result.code, None, "" except: #self.loop.stop() return 999, None, "" finally: pass
def test_ip(ip): hostname = APP_ID + '.appspot.com' url = 'https://' + hostname + '/2' request = HTTPRequest(url, request_timeout=5) try: client = SimpleAsyncHTTPClient(force_instance=True, hostname_mapping={hostname: ip}) res = yield client.fetch(request, raise_error=False) if isinstance(res.error, OSError): if res.error.errno == errno.EMFILE: warning_msg = ("Too many open files. You should increase the" " maximum allowed number of network connections in you" " system or decrease the CONCURRENCY setting.") warnings.warn(warning_msg) if res.code == 200: return True else: return False finally: client.close()
def test_http_11(io_loop, host, port): ssl_context = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH) ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE c = SimpleAsyncHTTPClient(io_loop=io_loop, max_clients=10000, force_instance=True) print("Sending HTTP/1.1 request") now = time.time() response = yield c.fetch("https://{}:{}/".format(host, port), ssl_options=ssl_context, raise_error=False) total_time = time.time() - now data_received = sum( len(key) + len(value) + 2 for key, value in response.headers.get_all()) + len(response.body) print( "Total data received: {} bytes\nDuration: {}s\nRate: {} Bps\n".format( data_received, total_time, data_received / total_time)) c.close()