Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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()
Ejemplo n.º 8
0
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()