def _get_http_client():
    if appengine.is_appengine_sandbox():
        return appengine.AppEngineManager()
    else:
        return urllib3.PoolManager()
 def setup_method(self, method):
     self.manager = appengine.AppEngineManager()
     self.pool = MockPool(self.host, self.port, self.manager)
示例#3
0
 def setUp(self):
     self.manager = appengine.AppEngineManager()
     self.pool = MockPool(self.host, self.port, self.manager)
 def setup_method(self, method):
     # Disable urlfetch which doesn't respect Retry-After header.
     self.manager = appengine.AppEngineManager(urlfetch_retries=False)
     self.pool = MockPool(self.host, self.port, self.manager)
示例#5
0
    def __init__(self,
                 con_pool_size=1,
                 proxy_url=None,
                 urllib3_proxy_kwargs=None,
                 connect_timeout=5.,
                 read_timeout=5.):
        if urllib3_proxy_kwargs is None:
            urllib3_proxy_kwargs = dict()

        self._connect_timeout = connect_timeout

        sockopts = HTTPConnection.default_socket_options + [
            (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
        ]

        # TODO: Support other platforms like mac and windows.
        if 'linux' in sys.platform:
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 120))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 30))
            sockopts.append((socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 8))

        self._con_pool_size = con_pool_size

        kwargs = dict(maxsize=con_pool_size,
                      cert_reqs='CERT_REQUIRED',
                      ca_certs=certifi.where(),
                      socket_options=sockopts,
                      timeout=urllib3.Timeout(connect=self._connect_timeout,
                                              read=read_timeout,
                                              total=None))

        # Set a proxy according to the following order:
        # * proxy defined in proxy_url (+ urllib3_proxy_kwargs)
        # * proxy set in `HTTPS_PROXY` env. var.
        # * proxy set in `https_proxy` env. var.
        # * None (if no proxy is configured)

        if not proxy_url:
            proxy_url = os.environ.get('HTTPS_PROXY') or os.environ.get(
                'https_proxy')

        if not proxy_url:
            if appengine.is_appengine_sandbox():
                # Use URLFetch service if running in App Engine
                mgr = appengine.AppEngineManager()
            else:
                mgr = urllib3.PoolManager(**kwargs)
        else:
            kwargs.update(urllib3_proxy_kwargs)
            if proxy_url.startswith('socks'):
                try:
                    from telegram.vendor.ptb_urllib3.urllib3.contrib.socks import SOCKSProxyManager
                except ImportError:
                    raise RuntimeError('PySocks is missing')
                mgr = SOCKSProxyManager(proxy_url, **kwargs)
            else:
                mgr = urllib3.proxy_from_url(proxy_url, **kwargs)
                if mgr.proxy.auth:
                    # TODO: what about other auth types?
                    auth_hdrs = urllib3.make_headers(
                        proxy_basic_auth=mgr.proxy.auth)
                    mgr.proxy_headers.update(auth_hdrs)

        self._con_pool = mgr