Merge pull request #440 from michael-lazar/new_rate_limiting

New rate limiting
This commit is contained in:
Michael Lazar
2017-09-13 23:58:36 -04:00
committed by GitHub
12 changed files with 2743 additions and 12 deletions

View File

@@ -38,6 +38,7 @@ from .config import Config, copy_default_config, copy_default_mailcap
from .theme import Theme
from .oauth import OAuthHelper
from .terminal import Terminal
from .content import RequestHeaderRateLimiter
from .objects import curses_session, patch_webbrowser
from .subreddit_page import SubredditPage
from .exceptions import ConfigError
@@ -176,7 +177,13 @@ def main():
with term.loader('Initializing', catch_exception=False):
reddit = praw.Reddit(user_agent=user_agent,
decode_html_entities=False,
disable_update_check=True)
disable_update_check=True,
handler=RequestHeaderRateLimiter())
# Dial the request cache up from 30 seconds to 5 minutes
# I'm trying this out to make navigation back and forth
# between pages quicker, it may still need to be fine tuned.
reddit.config.api_request_delay = 300
# Authorize on launch if the refresh token is present
oauth = OAuthHelper(reddit, term, config)

View File

@@ -2,8 +2,10 @@
from __future__ import unicode_literals
import re
import time
import logging
from datetime import datetime
from timeit import default_timer as timer
import six
from kitchen.text.display import wrap
@@ -11,6 +13,8 @@ from kitchen.text.display import wrap
from . import exceptions
from .packages import praw
from .packages.praw.errors import InvalidSubreddit
from .packages.praw.helpers import normalize_url
from .packages.praw.handlers import DefaultHandler
_logger = logging.getLogger(__name__)
@@ -777,3 +781,169 @@ class SubscriptionContent(Content):
data['h_offset'] = 0
return data
class RequestHeaderRateLimiter(DefaultHandler):
"""Custom PRAW request handler for rate-limiting requests.
This is an alternative to PRAW 3's DefaultHandler that uses
Reddit's modern API guidelines to rate-limit requests based
on the X-Ratelimit-* headers returned from Reddit. Most of
these methods are copied from or derived from the DefaultHandler.
References:
https://github.com/reddit/reddit/wiki/API
https://github.com/praw-dev/prawcore/blob/master/prawcore/rate_limit.py
"""
def __init__(self):
# In PRAW's convention, these variables were bound to the
# class so the cache could be shared among all of the ``reddit``
# instances. In RTV's use-case there is only ever a single reddit
# instance so it made sense to clean up the globals and transfer them
# to method variables
self.cache = {}
self.timeouts = {}
# These are used for the header rate-limiting
self.used = None
self.remaining = None
self.seconds_to_reset = None
self.next_request_timestamp = None
super(RequestHeaderRateLimiter, self).__init__()
def _delay(self):
"""
Pause before making the next HTTP request.
"""
if self.next_request_timestamp is None:
return
sleep_seconds = self.next_request_timestamp - time.time()
if sleep_seconds <= 0:
return
time.sleep(sleep_seconds)
def _update(self, response_headers):
"""
Update the state of the rate limiter based on the response headers:
X-Ratelimit-Used: Approximate number of requests used this period
X-Ratelimit-Remaining: Approximate number of requests left to use
X-Ratelimit-Reset: Approximate number of seconds to end of period
PRAW 5's rate limiting logic is structured for making hundreds of
evenly-spaced API requests, which makes sense for running something
like a bot or crawler.
This handler's logic, on the other hand, is geared more towards
interactive usage. It allows for short, sporadic bursts of requests.
The assumption is that actual users browsing reddit shouldn't ever be
in danger of hitting the rate limit. If they do hit the limit, they
will be cutoff until the period resets.
"""
if 'x-ratelimit-remaining' not in response_headers:
# This could be because the API returned an error response, or it
# could be because we're using something like read-only credentials
# which Reddit doesn't appear to care about rate limiting.
return
self.used = float(response_headers['x-ratelimit-used'])
self.remaining = float(response_headers['x-ratelimit-remaining'])
self.seconds_to_reset = int(response_headers['x-ratelimit-reset'])
_logger.debug('Rate limit: %s used, %s remaining, %s reset',
self.used, self.remaining, self.seconds_to_reset)
if self.remaining <= 0:
self.next_request_timestamp = time.time() + self.seconds_to_reset
else:
self.next_request_timestamp = None
def _clear_timeouts(self, cache_timeout):
"""
Clear the cache of timed out results.
"""
for key in list(self.timeouts):
if timer() - self.timeouts[key] > cache_timeout:
del self.timeouts[key]
del self.cache[key]
def clear_cache(self):
"""Remove all items from the cache."""
self.cache = {}
self.timeouts = {}
def evict(self, urls):
"""Remove items from cache matching URLs.
Return the number of items removed.
"""
if isinstance(urls, six.text_type):
urls = [urls]
urls = set(normalize_url(url) for url in urls)
retval = 0
for key in list(self.cache):
if key[0] in urls:
retval += 1
del self.cache[key]
del self.timeouts[key]
return retval
def request(self, _cache_key, _cache_ignore, _cache_timeout, **kwargs):
"""
This is a wrapper function that handles the caching of the request.
See DefaultHandler.with_cache for reference.
"""
if _cache_key:
# Pop the request's session cookies from the cache key.
# These appear to be unreliable and change with every
# request. Also, with the introduction of OAuth I don't think
# that cookies are being used to store anything that
# differentiates API requests anyways
url, items = _cache_key
_cache_key = (url, (items[0], items[1], items[3], items[4]))
if kwargs['request'].method != 'GET':
# I added this check for RTV, I have no idea why PRAW would ever
# want to cache POST/PUT/DELETE requests
_cache_ignore = True
if _cache_ignore:
return self._request(**kwargs)
self._clear_timeouts(_cache_timeout)
if _cache_key in self.cache:
return self.cache[_cache_key]
result = self._request(**kwargs)
# The handlers don't call `raise_for_status` so we need to ignore
# status codes that will result in an exception that should not be
# cached.
if result.status_code not in (200, 302):
return result
self.timeouts[_cache_key] = timer()
self.cache[_cache_key] = result
return result
def _request(self, request, proxies, timeout, verify, **_):
"""
This is where we apply rate limiting and make the HTTP request.
"""
settings = self.http.merge_environment_settings(
request.url, proxies, False, verify, None)
self._delay()
response = self.http.send(
request, timeout=timeout, allow_redirects=False, **settings)
self._update(response.headers)
return response

View File

@@ -81,6 +81,11 @@ class Page(object):
ch = self.term.stdscr.getch()
self.controller.trigger(ch)
@PageController.register(Command('REFRESH'))
def reload_page(self):
self.reddit.handler.clear_cache()
self.refresh_content()
@PageController.register(Command('EXIT'))
def exit(self):
if self.term.prompt_y_or_n('Do you really want to quit? (y/n): '):
@@ -255,7 +260,7 @@ class Page(object):
# Give reddit time to process the request
time.sleep(2.0)
if self.term.loader.exception is None:
self.refresh_content()
self.reload_page()
@PageController.register(Command('EDIT'))
@logged_in
@@ -291,7 +296,7 @@ class Page(object):
time.sleep(2.0)
if self.term.loader.exception is None:
self.refresh_content()
self.reload_page()
else:
raise TemporaryFileError()

View File

@@ -66,7 +66,6 @@ class SubmissionPage(Page):
self.active = False
@SubmissionController.register(Command('REFRESH'))
def refresh_content(self, order=None, name=None):
"""
Re-download comments and reset the page index
@@ -188,7 +187,7 @@ class SubmissionPage(Page):
time.sleep(2.0)
if self.term.loader.exception is None:
self.refresh_content()
self.reload_page()
else:
raise TemporaryFileError()

View File

@@ -34,7 +34,6 @@ class SubredditPage(Page):
self.nav = Navigator(self.content.get)
self.toggled_subreddit = None
@SubredditController.register(Command('REFRESH'))
def refresh_content(self, order=None, name=None):
"""
Re-download all submissions and reset the page index
@@ -209,7 +208,7 @@ class SubredditPage(Page):
self.content = page.selected_subreddit
self.nav = Navigator(self.content.get)
else:
self.refresh_content()
self.reload_page()
@SubredditController.register(Command('SUBREDDIT_OPEN_SUBSCRIPTIONS'))
@logged_in

View File

@@ -25,7 +25,6 @@ class SubscriptionPage(Page):
self.content_type = content_type
self.selected_subreddit = None
@SubscriptionController.register(Command('REFRESH'))
def refresh_content(self, order=None, name=None):
"""
Re-download all subscriptions and reset the page index

View File

@@ -0,0 +1,470 @@
interactions:
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: GET
uri: https://api.reddit.com/r/python/.json
response:
body:
string: !!binary |
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
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['10705']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:53:50 GMT']
Server: [snooserv]
Set-Cookie: ['loid=00000000000dresn2j.2.1505361230171.Z0FBQUFBQlp1ZjFPLVVkXzQ0R0NOeGNvdGZ2Y05zOVRiU2xRZFAtSXpWRnMzUzcwQWw5X1RGUktuUXk5cEJzT29XZHdBbmpkU19uMW1UWjB1NG0zZ0lzY0JrdzBrYkxkSWVyOGZGaDgwSjRwdTBtUTlLQ051Qkc5UUtNWFhMZ29vdm1XS1RCeHB6SzY;
Domain=reddit.com; Max-Age=63071999; Path=/; expires=Sat, 14-Sep-2019 03:53:50
GMT; secure', 'session_tracker=gCkCjtYrydNt1OtqPx.0.1505361230166.Z0FBQUFBQlp1ZjFPSTNuZGJUcU9ydkJGRy1va0Z4Y1JlYXU3dmRJU2pXSFFsS0tyZ2NVNzZVSTFhbjlRYVNwdGdVaEFjWTlpUUVfc2NqcTNwNWRCaWoxbld0VnpBMFdrUVhuYUNNb0RXUUstQmRUN2taSXgzaG5sUmZ2N0dqVV9kV0w4aGVPeGx3QmE;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:53:50
GMT; secure', edgebucket=ZwkjuekXJETk9f0rtQ; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1734-ORD]
X-Timer: ['S1505361230.151987,VS0,VE130']
access-control-allow-origin: ['*']
access-control-expose-headers: ['X-Reddit-Tracking, X-Moose']
cache-control: ['max-age=0, must-revalidate']
set-cookie: ['loid=00000000000dresn2j.2.1505361230171.Z0FBQUFBQlp1ZjFPLVVkXzQ0R0NOeGNvdGZ2Y05zOVRiU2xRZFAtSXpWRnMzUzcwQWw5X1RGUktuUXk5cEJzT29XZHdBbmpkU19uMW1UWjB1NG0zZ0lzY0JrdzBrYkxkSWVyOGZGaDgwSjRwdTBtUTlLQ051Qkc5UUtNWFhMZ29vdm1XS1RCeHB6SzY;
Domain=reddit.com; Max-Age=63071999; Path=/; expires=Sat, 14-Sep-2019 03:53:50
GMT; secure', 'session_tracker=gCkCjtYrydNt1OtqPx.0.1505361230166.Z0FBQUFBQlp1ZjFPSTNuZGJUcU9ydkJGRy1va0Z4Y1JlYXU3dmRJU2pXSFFsS0tyZ2NVNzZVSTFhbjlRYVNwdGdVaEFjWTlpUUVfc2NqcTNwNWRCaWoxbld0VnpBMFdrUVhuYUNNb0RXUUstQmRUN2taSXgzaG5sUmZ2N0dqVV9kV0w4aGVPeGx3QmE;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:53:50
GMT; secure', edgebucket=ZwkjuekXJETk9f0rtQ; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-reddit-tracking: ['https://pixel.redditmedia.com/pixel/of_destiny.png?v=CC%2BoysF4c2QCDA1cv0lXL4EFsnlLacG7YoiMu8CIYoioysJL8eZTvYBORhfKI6Mie58DfZy2GiI%3D']
x-ua-compatible: [IE=edge]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
Cookie: [edgebucket=ZwkjuekXJETk9f0rtQ; loid=00000000000dresn2j.2.1505361230171.Z0FBQUFBQlp1ZjFPLVVkXzQ0R0NOeGNvdGZ2Y05zOVRiU2xRZFAtSXpWRnMzUzcwQWw5X1RGUktuUXk5cEJzT29XZHdBbmpkU19uMW1UWjB1NG0zZ0lzY0JrdzBrYkxkSWVyOGZGaDgwSjRwdTBtUTlLQ051Qkc5UUtNWFhMZ29vdm1XS1RCeHB6SzY;
session_tracker=gCkCjtYrydNt1OtqPx.0.1505361230166.Z0FBQUFBQlp1ZjFPSTNuZGJUcU9ydkJGRy1va0Z4Y1JlYXU3dmRJU2pXSFFsS0tyZ2NVNzZVSTFhbjlRYVNwdGdVaEFjWTlpUUVfc2NqcTNwNWRCaWoxbld0VnpBMFdrUVhuYUNNb0RXUUstQmRUN2taSXgzaG5sUmZ2N0dqVV9kV0w4aGVPeGx3QmE]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: GET
uri: https://api.reddit.com/r/python/.json
response:
body:
string: !!binary |
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
AA==
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['10717']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:53:50 GMT']
Server: [snooserv]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1734-ORD]
X-Timer: ['S1505361230.401261,VS0,VE135']
access-control-allow-origin: ['*']
access-control-expose-headers: ['X-Reddit-Tracking, X-Moose']
cache-control: ['max-age=0, must-revalidate']
set-cookie: ['session_tracker=gCkCjtYrydNt1OtqPx.0.1505361230415.Z0FBQUFBQlp1ZjFPbjhCUHJjeVhtZWppZG1SVWFTWkp5VU5POVNvb0V3a1FqYnBFdXd5WjZ6Q2ZzdXA3RWNnUXdHTmVpbzd0ZFIxRTlkeElCR2U1WWwtTUhCXzRvRDcwNGRSWVlhTTJ4T3FIV05CeXFJR2VUS0JCMS1DVHA5bTF2cWlNaWZFX05BdUc;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:53:50
GMT; secure']
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-reddit-tracking: ['https://pixel.redditmedia.com/pixel/of_destiny.png?v=4C095%2BKWWYyl9WtXYXjsTWxLEFOw58Sc9nZyyKvtxg%2FFZKUfwsJDNvGEh3j%2FzNaYGU2%2BvJwYUhk%3D']
x-ua-compatible: [IE=edge]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
version: 1

View File

@@ -0,0 +1,588 @@
interactions:
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: GET
uri: https://api.reddit.com/r/python/.json
response:
body:
string: !!binary |
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
NHJedw0BAA==
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['10723']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:34:25 GMT']
Server: [snooserv]
Set-Cookie: ['loid=00000000000drcw01i.2.1505360065178.Z0FBQUFBQlp1ZmpCZnJBMlhNcFVMa0RON1lKNzlDUU5FelFZenQySllVckJKZlROOHZEbTJGRVl6WWt6d29hQXhCbWFjWVBEUnhYcldDSVI4Rm05RWtoQjJoc0g0RF85MkxpQ21CYWhyZG56RzF5eFRvbkl4emVTaUt3eGhqbS0xNmR5WkR0bmx2QkQ;
Domain=reddit.com; Max-Age=63071999; Path=/; expires=Sat, 14-Sep-2019 03:34:25
GMT; secure', 'session_tracker=k4wTKdlbdgmQMGGxHq.0.1505360065173.Z0FBQUFBQlp1ZmpCVXFIZFdVbjFFbEZibkRvV0pMOWlhZVV0M182dXUtUktVQkt0UnZFWXBkWm03TU1uRnRFQlEyLWFMdHEyWlhKX1ZCT2x2ZWR0bElTUnFIVXBkNVVWb01DS25Nc1dVcDhkamNQcGNXNjFLaUlxWU9aV2dhelRnUHNodk10eC1ldnk;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure', edgebucket=pDW9Lys2h8bInGGb9N; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1731-ORD]
X-Timer: ['S1505360065.158056,VS0,VE145']
access-control-allow-origin: ['*']
access-control-expose-headers: ['X-Reddit-Tracking, X-Moose']
cache-control: ['max-age=0, must-revalidate']
set-cookie: ['loid=00000000000drcw01i.2.1505360065178.Z0FBQUFBQlp1ZmpCZnJBMlhNcFVMa0RON1lKNzlDUU5FelFZenQySllVckJKZlROOHZEbTJGRVl6WWt6d29hQXhCbWFjWVBEUnhYcldDSVI4Rm05RWtoQjJoc0g0RF85MkxpQ21CYWhyZG56RzF5eFRvbkl4emVTaUt3eGhqbS0xNmR5WkR0bmx2QkQ;
Domain=reddit.com; Max-Age=63071999; Path=/; expires=Sat, 14-Sep-2019 03:34:25
GMT; secure', 'session_tracker=k4wTKdlbdgmQMGGxHq.0.1505360065173.Z0FBQUFBQlp1ZmpCVXFIZFdVbjFFbEZibkRvV0pMOWlhZVV0M182dXUtUktVQkt0UnZFWXBkWm03TU1uRnRFQlEyLWFMdHEyWlhKX1ZCT2x2ZWR0bElTUnFIVXBkNVVWb01DS25Nc1dVcDhkamNQcGNXNjFLaUlxWU9aV2dhelRnUHNodk10eC1ldnk;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure', edgebucket=pDW9Lys2h8bInGGb9N; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-reddit-tracking: ['https://pixel.redditmedia.com/pixel/of_destiny.png?v=w2zI10CKhN0cuDFpS5Sja3JHe8PHstPL2MPcD8GTAX7OzcKclWgtvdtPmP4khzGzFCgf3COGr7I%3D']
x-ua-compatible: [IE=edge]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
- request:
body: grant_type=refresh_token&redirect_uri=http%3A%2F%2F127.0.0.1%3A65000%2F&refresh_token=**********
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Authorization: ['**********']
Connection: [keep-alive]
Content-Length: ['122']
Content-Type: [application/x-www-form-urlencoded]
Cookie: [edgebucket=pDW9Lys2h8bInGGb9N; loid=00000000000drcw01i.2.1505360065178.Z0FBQUFBQlp1ZmpCZnJBMlhNcFVMa0RON1lKNzlDUU5FelFZenQySllVckJKZlROOHZEbTJGRVl6WWt6d29hQXhCbWFjWVBEUnhYcldDSVI4Rm05RWtoQjJoc0g0RF85MkxpQ21CYWhyZG56RzF5eFRvbkl4emVTaUt3eGhqbS0xNmR5WkR0bmx2QkQ;
session_tracker=k4wTKdlbdgmQMGGxHq.0.1505360065173.Z0FBQUFBQlp1ZmpCVXFIZFdVbjFFbEZibkRvV0pMOWlhZVV0M182dXUtUktVQkt0UnZFWXBkWm03TU1uRnRFQlEyLWFMdHEyWlhKX1ZCT2x2ZWR0bElTUnFIVXBkNVVWb01DS25Nc1dVcDhkamNQcGNXNjFLaUlxWU9aV2dhelRnUHNodk10eC1ldnk]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: POST
uri: https://api.reddit.com/api/v1/access_token/
response:
body: {string: '{"access_token": "j5nsE0MLZHcCWoY74w-qpiTinPs", "token_type":
"bearer", "device_id": "None", "expires_in": 3600, "scope": "edit history
identity mysubreddits privatemessages read report save submit subscribe vote"}'}
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Length: ['214']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:34:25 GMT']
Server: [snooserv]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1731-ORD]
X-Timer: ['S1505360065.422828,VS0,VE51']
cache-control: ['max-age=0, must-revalidate']
set-cookie: ['session_tracker=k4wTKdlbdgmQMGGxHq.0.1505360065436.Z0FBQUFBQlp1ZmpCdXVBRWRjeV9ZdzRHR08zenpXVWVkZFViN1F6dGdERDIycFVyZTJaX1pMcWxNeElxRXU1RHpYaVJ1aFR4bkVhM1NJWmVPMU5wcWYwRnl1THBwYTU2eGpzUU9LRmJjdy1aNHduaTFOY2JLazhGN1ExMkRnYzB1djd5cXRTTFllUnQ;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure']
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Authorization: ['**********']
Connection: [keep-alive]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: GET
uri: https://oauth.reddit.com/api/v1/me.json
response:
body:
string: !!binary |
H4sIAMH4uVkC/61W227cNhD9FWOfXdvS+rLJW5o6rdsiiIsWBVoUBCWNVsxSJMPLrneD/ntnKGpF
OdsmBfJirDW8nDlz5nA+LoRj0Bup9wCLl2ctlw7OzxYtcB8sOPz0ceGA27pjJlRS1Mxb3raijhG9
U2DxV1qywJ1bbgVXnj4q2LG0d0UheDJgRQ/KM9HggrIo/8bPdcdpubeBbm40U9rTLfVm+uo6vWO8
N0wKlX2WYgus48aAEmqNG3dTTKj3UHuGIOZQLUjYclXDM7QWeo2n1Vq50ENzEvDVkgDzxoHdgmUW
jLYeb55uXUdEzju2tngwEThihTWv9yMhxkKb5+HoGEbnihqYxVSDmeJ4I+PBawZPHhRBSYFeV0IC
20HFPLdrmINpoOVBeuasY52WjQ6U6RdwgSR4qyUrTrFQ3BUDCwewG3a6XgEzcSyllbED2mgTJLdM
qK8IqSyuCNKuEx7oUmiY6TPuhar0EwrYddM3PMFpxaU4cC+0ihXJtgSDBWxID3ojYiMcz/KAneFP
EV5b7ZzRGDRWt1iZKVRJXW8Y8cKqfVLOFD0WGEGEvMAaVbTG+yhOncqFzLD0VPgnvKvXrNcNlyPl
rMZWxeLg8j1rhOuFc6JCpQidbUcaucICwhZmUoWQ0mZG4zn7jBXfY6iPzFMrZptabVG5nfcmBzjo
UyHF2BcVV0OVxxIQU5h0IotV4PkUxaQb4QN6E7GD/wmLDZ1RE3ylkawh1yjAWTHIfqRer3GjYjWv
u0/TiWhPHJ2atOEo8MnvTpAexYCMe4HcJ2LcnGTDsegMU8g+WY3i6ntkpZ5HpgbJwJD3Ib54eoPS
nnvg5+Fgja2OfZK2DGqrSfbZNbUFUFuBrD3XAzE5KBa1xJHTvMA8Nf+MexeqoXzMBpl3TxKEA08y
zQLJTo6WysoshlC3wpN5Dv64s9jozxiKreUsaq3PQseOpCOjK2VlIPlBX0FuqBmbHKlG7dHOicLM
qvDhQj1jP56fdKrylFMVqztyqozRVuavFlZBS/lJBf5/o39S9Mx7Tfc1vbe8GZ6DweE8WuN/VM4C
HzHRLjJdfD+iA3CFC6etOJi44EyU/GKaTOKOWZuoICUxN0ou5hTVgEdE6KJCa6Wl4yECPzPRk2AH
D3h5eVld+C70lbsYTsERQPAL7KHLu1fSbO+t3vrH4vZKv3izf3hofnh9aH8uN9/A+/rFqvztNrx7
HQ4PFwabAM8fjO6LbzC/L399WG7l4XZTbx6+s++ul2/6n+T3fyxfPW31sj18+/a+qH80rn4cb8BS
G8n3Ue3x6RJPkaZFuKyR8elV6/gB2JK2dEg9tYg4UH8k1kaeIuKcZ6QTtSiqoWOKoSDjQEH8TZXa
wB55lpHhBd0U+zGmNy1qgI4zyXPisvHuPvjZ1XluMSX2mZQGnlNGGczn7w0aY3ySF/92XrCSwpeE
7CSPl1l1E5F/FuXq6vxsubr+C2MjZn/DlvLD3e0sT41g+aDEhEjTGFmssuTTlH2CLrJ9dAsuLAPF
scdzzqKiR0Tlze35Gf4hQJMT+70Z6EQ4dB4PjQBs9jTIPK/KJIAEl/qVvhuckGfdtEYvwcnUCBu5
ykoRFSk/KK6jLGI7O6JzWs2Cp7c17UA6RCtyQyanROJo8MFdaHokx7R6Ym/yDAKT8xJpn1Z0OEWN
lwzj1DyGi1n6Oh6hcTDryGePlre4L/W9/+WxbdpX7dvHqESBs2KL/sysrnQEOe6Pddtw21M3lOWK
UMV5tMbphWhH9Qy25rUZFhL5Q9WyNyDCm0OLu2K3OaX1lvtoiGN01OIpIRNmfPD50HnFdXlTLovb
66sLAhMLWk8A6FtanMoVN1yVq7QBB6w0u413j0PimPfqRcrgKKvjM/APhXUFzIQOAAA=
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['1418']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:34:25 GMT']
Server: [snooserv]
Set-Cookie: ['session_tracker=ccNg4m5YpT4IeulT85.0.1505360065667.Z0FBQUFBQlp1ZmpCaDZScFVxdENaeGdsdEg4azhBQ2pzaUVqQXhuOUFJcmw2Z3dBS09fN2ZlTHpkZTI3VDVtWEdnZmF5TmZHNDF5VV9SNFM3d1RsUmw3NVpnNUFTbjRDQ1NLbnpWRFRwOEZZMTZROVd5d09JdmpRV01zLW9aYlZ1YThYdDVtNjhPa3Y;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure', edgebucket=iZJoZjF7XACk7ejFHw; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1747-ORD]
X-Timer: ['S1505360066.653595,VS0,VE60']
cache-control: ['private, s-maxage=0, max-age=0, must-revalidate, max-age=0,
must-revalidate']
expires: ['-1']
set-cookie: ['session_tracker=ccNg4m5YpT4IeulT85.0.1505360065667.Z0FBQUFBQlp1ZmpCaDZScFVxdENaeGdsdEg4azhBQ2pzaUVqQXhuOUFJcmw2Z3dBS09fN2ZlTHpkZTI3VDVtWEdnZmF5TmZHNDF5VV9SNFM3d1RsUmw3NVpnNUFTbjRDQ1NLbnpWRFRwOEZZMTZROVd5d09JdmpRV01zLW9aYlZ1YThYdDVtNjhPa3Y;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure', edgebucket=iZJoZjF7XACk7ejFHw; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-ratelimit-remaining: ['592.0']
x-ratelimit-reset: ['335']
x-ratelimit-used: ['8']
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Authorization: ['**********']
Connection: [keep-alive]
Cookie: [edgebucket=iZJoZjF7XACk7ejFHw; session_tracker=ccNg4m5YpT4IeulT85.0.1505360065667.Z0FBQUFBQlp1ZmpCaDZScFVxdENaeGdsdEg4azhBQ2pzaUVqQXhuOUFJcmw2Z3dBS09fN2ZlTHpkZTI3VDVtWEdnZmF5TmZHNDF5VV9SNFM3d1RsUmw3NVpnNUFTbjRDQ1NLbnpWRFRwOEZZMTZROVd5d09JdmpRV01zLW9aYlZ1YThYdDVtNjhPa3Y]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.6.1 b'Darwin-14.5.0-x86_64-i386-64bit']
method: GET
uri: https://oauth.reddit.com/r/python/.json
response:
body:
string: !!binary |
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
/wMQZadHQA0BAA==
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['10726']
Content-Type: [application/json; charset=UTF-8]
Date: ['Thu, 14 Sep 2017 03:34:25 GMT']
Server: [snooserv]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-ord1747-ORD]
X-Timer: ['S1505360066.785562,VS0,VE153']
cache-control: ['private, s-maxage=0, max-age=0, must-revalidate, max-age=0,
must-revalidate']
expires: ['-1']
set-cookie: ['loid=0000000000000lqnao.2.1425202840186.Z0FBQUFBQlp1ZmpCQ2hwVmRON2pPcE4wQml3bHhrR3pnVGlkbjJDNldkVGhiMFc5c3loLXE3MERBTHV5eGQxWHg2ZkthNHhIN1MyZTFKUlU0eUVScTZVXzlyWkxwc0dQZGE1RGUwRk1uTnN6OThqSzZ5dXJHQ2dpcHpTc1RkSDhJeWs1WHBDZEFHeTY;
Domain=reddit.com; Max-Age=63071999; Path=/; expires=Sat, 14-Sep-2019 03:34:25
GMT; secure', 'session_tracker=ccNg4m5YpT4IeulT85.0.1505360065801.Z0FBQUFBQlp1ZmpCQmM0Q21zdlRWMTB0TmtqU25UOFdzcy10WkNybkc0YnRNelVjVFhWeEFaT05LU3RaWFBHUFAtNDVqRExKUW1kanJoRWNOYjRoSDRXS29IaXdfM1RZM1ZEX2t3X1doaWx3T2JHcVdzR1Z2N1o1X3VsUkFhNndtUk45Z2tjeWFQeXQ;
Domain=reddit.com; Max-Age=7199; Path=/; expires=Thu, 14-Sep-2017 05:34:25
GMT; secure']
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-ratelimit-remaining: ['591.0']
x-ratelimit-reset: ['335']
x-ratelimit-used: ['9']
x-reddit-tracking: ['https://pixel.redditmedia.com/pixel/of_destiny.png?v=PCoJe8sg5slPNmRboPobsY1BcSSnQQTlQAJJgMBLg8KMtNFALTng99PGO0pHOcYtDa4hoNeeaElx5u5lqX5P7zuQLacty5Qb']
x-ua-compatible: [IE=edge]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
version: 1

File diff suppressed because it is too large Load Diff

View File

@@ -13,6 +13,7 @@ from six.moves.urllib.parse import urlparse, parse_qs
from six.moves.BaseHTTPServer import HTTPServer
from rtv.oauth import OAuthHelper, OAuthHandler
from rtv.content import RequestHeaderRateLimiter
from rtv.config import Config
from rtv.packages import praw
from rtv.terminal import Terminal
@@ -39,7 +40,7 @@ for name in ['vcr.matchers', 'vcr.stubs']:
def pytest_addoption(parser):
parser.addoption('--record-mode', dest='record_mode', default='none')
parser.addoption('--refresh-token', dest='refresh_token',
default='tests/refresh-token')
default='~/.config/rtv/refresh-token')
class MockStdscr(mock.MagicMock):
@@ -180,9 +181,11 @@ def reddit(vcr, request):
with vcr.use_cassette(cassette_name):
with patch('rtv.packages.praw.Reddit.get_access_information'):
handler = RequestHeaderRateLimiter()
reddit = praw.Reddit(user_agent='rtv test suite',
decode_html_entities=False,
disable_update_check=True)
disable_update_check=True,
handler=handler)
# praw uses a global cache for requests, so we need to clear it
# before each unit test. Otherwise we may fail to generate new
# cassettes.

View File

@@ -11,7 +11,8 @@ import pytest
from rtv import exceptions
from rtv.packages import praw
from rtv.content import (
Content, SubmissionContent, SubredditContent, SubscriptionContent)
Content, SubmissionContent, SubredditContent, SubscriptionContent,
RequestHeaderRateLimiter)
try:
from unittest import mock
@@ -560,3 +561,49 @@ def test_content_subscription_empty(reddit, terminal):
with terminal.loader():
SubscriptionContent.from_user(reddit, terminal.loader)
assert isinstance(terminal.loader.exception, exceptions.SubscriptionError)
def test_content_cache(reddit):
# Make sure the test suite is configured to use the custom handler
assert isinstance(reddit.handler, RequestHeaderRateLimiter)
assert not reddit.handler.cache
# A standard 200 response should be added to the cache
next(reddit.get_subreddit('python').get_hot())
request = list(reddit.handler.cache.values())[0]
assert request.url == 'https://api.reddit.com/r/python/.json'
# Clearing the cache should remove the request
reddit.handler.cache.clear()
assert not reddit.handler.cache
next(reddit.get_subreddit('python').get_hot())
assert reddit.handler.cache
# Evicting the cache should also remove the entry
reddit.handler.evict('https://api.reddit.com/r/python')
assert not reddit.handler.cache
def test_content_rate_limit(reddit, oauth, refresh_token):
# Make sure the test suite is configured to use the custom handler
assert isinstance(reddit.handler, RequestHeaderRateLimiter)
assert not reddit.handler.cache
# unauthenticated requests don't return the x-ratelimit headers
# so they currently aren't limited
next(reddit.get_subreddit('python').get_hot())
assert reddit.handler.seconds_to_reset is None
oauth.config.refresh_token = refresh_token
oauth.authorize()
# But now that we're logged in the headers should be returned
next(reddit.get_subreddit('python').get_hot())
assert reddit.handler.seconds_to_reset
# Even though the headers were returned, the rate limiting should
# still not be triggering a delay for the next request
assert reddit.handler.next_request_timestamp is None

View File

@@ -7,7 +7,7 @@ import six
from rtv import __version__
from rtv.subreddit_page import SubredditPage
from rtv.packages.praw.errors import NotFound
from rtv.packages.praw.errors import NotFound, HTTPException
try:
from unittest import mock
@@ -66,6 +66,27 @@ def test_subreddit_refresh(subreddit_page, terminal):
assert terminal.loader.exception is None
def test_subreddit_reload_page(subreddit_page, terminal, reddit):
cache = reddit.handler.cache
assert len(cache) == 1
# A plain refresh_content() will use whatever is in the praw cache
# instead of making a new request to reddit
list(cache.values())[0].status_code = 503
subreddit_page.refresh_content()
assert isinstance(terminal.loader.exception, HTTPException)
cache = reddit.handler.cache
assert len(cache) == 1
# But if we manually trigger a page refresh, it should clear the cache
# and reload the page instead of returning the cached 503 response
list(cache.values())[0].status_code = 503
subreddit_page.controller.trigger('r')
assert terminal.loader.exception is None
def test_subreddit_title(subreddit_page, terminal, capsys):
subreddit_page.content.name = 'hello ❤'