当前位置: 首页>>代码示例>>Python>>正文


Python Session.merge_environment_settings方法代码示例

本文整理汇总了Python中requests.Session.merge_environment_settings方法的典型用法代码示例。如果您正苦于以下问题:Python Session.merge_environment_settings方法的具体用法?Python Session.merge_environment_settings怎么用?Python Session.merge_environment_settings使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在requests.Session的用法示例。


在下文中一共展示了Session.merge_environment_settings方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: fetch_ws

# 需要导入模块: from requests import Session [as 别名]
# 或者: from requests.Session import merge_environment_settings [as 别名]
 def fetch_ws(self, prepreq):
     """fetch from web service"""
     sess = Session()
     settings = sess.merge_environment_settings(prepreq.url, {}, None, False, None)
     resp = sess.send(prepreq, timeout=SOCKET_TIMEOUT, **settings)
     if resp.status_code == 304:
         self.stats.update(etag=self.stats.get('etag')+1)
         resp = self.controller.update_cached_response(prepreq, resp)
     elif resp.status_code != 200:
         raise WSHTTPError('{0.status_code}: {0.reason}'.format(resp))
     ratelimit = resp.headers.get('x-ratelimit-remaining', None)
     if ratelimit and self.stats:
         minrl = min(int(ratelimit), self.stats.get('minrl'))
         self.stats.update(minrl=minrl)
     self.controller.cache_response(resp.request, resp)
     return resp
开发者ID:bse666,项目名称:rpi-music-stack,代码行数:18,代码来源:http.py

示例2: RateLimitHandler

# 需要导入模块: from requests import Session [as 别名]
# 或者: from requests.Session import merge_environment_settings [as 别名]
class RateLimitHandler(object):
    """The base handler that provides thread-safe rate limiting enforcement.

    While this handler is threadsafe, PRAW is not thread safe when the same
    `Reddit` instance is being utilized from multiple threads.

    """

    last_call = {}  # Stores a two-item list: [lock, previous_call_time]
    rl_lock = Lock()  # lock used for adding items to last_call

    @staticmethod
    def rate_limit(function):
        """Return a decorator that enforces API request limit guidelines.

        We are allowed to make a API request every api_request_delay seconds as
        specified in praw.ini. This value may differ from reddit to reddit. For
        reddit.com it is 2. Any function decorated with this will be forced to
        delay _rate_delay seconds from the calling of the last function
        decorated with this before executing.

        This decorator must be applied to a RateLimitHandler class method or
        instance method as it assumes `rl_lock` and `last_call` are available.

        """
        @wraps(function)
        def wrapped(cls, _rate_domain, _rate_delay, **kwargs):
            cls.rl_lock.acquire()
            lock_last = cls.last_call.setdefault(_rate_domain, [Lock(), 0])
            with lock_last[0]:  # Obtain the domain specific lock
                cls.rl_lock.release()
                # Sleep if necessary, then perform the request
                now = timer()
                delay = lock_last[1] + _rate_delay - now
                if delay > 0:
                    now += delay
                    time.sleep(delay)
                lock_last[1] = now
                return function(cls, **kwargs)
        return wrapped

    @classmethod
    def evict(cls, urls):  # pylint: disable=W0613
        """Method utilized to evict entries for the given urls.

        :param urls: An iterable containing normalized urls.
        :returns: The number of items removed from the cache.

        By default this method returns False as a cache need not be present.

        """
        return 0

    def __del__(self):
        """Cleanup the HTTP session."""
        if self.http:
            try:
                self.http.close()
            except:  # Never fail  pylint: disable=W0702
                pass

    def __init__(self):
        """Establish the HTTP session."""
        self.http = Session()  # Each instance should have its own session

    def request(self, request, proxies, timeout, verify, **_):
        """Responsible for dispatching the request and returning the result.

        Network level exceptions should be raised and only
        ``requests.Response`` should be returned.

        :param request: A ``requests.PreparedRequest`` object containing all
            the data necessary to perform the request.
        :param proxies: A dictionary of proxy settings to be utilized for the
            request.
        :param timeout: Specifies the maximum time that the actual HTTP request
            can take.
        :param verify: Specifies if SSL certificates should be validated.

        ``**_`` should be added to the method call to ignore the extra
        arguments intended for the cache handler.

        """
        settings = self.http.merge_environment_settings(
            request.url, proxies, False, verify, None
        )
        return self.http.send(request, timeout=timeout, allow_redirects=False,
                              **settings)
开发者ID:13steinj,项目名称:praw,代码行数:90,代码来源:handlers.py


注:本文中的requests.Session.merge_environment_settings方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。