Skip to content

Instantly share code, notes, and snippets.

@m3g4p0p
Created January 5, 2022 20:48
Show Gist options
  • Save m3g4p0p/e3dbda030e6dd38ccc60ae98d8477e02 to your computer and use it in GitHub Desktop.
Save m3g4p0p/e3dbda030e6dd38ccc60ae98d8477e02 to your computer and use it in GitHub Desktop.
import json
import pickle
from contextlib import contextmanager
import requests
def hash_args(args, kwargs):
return hash(json.dumps((args, kwargs), sort_keys=True))
@contextmanager
def record(session=None):
recorded = {}
if session is None:
session = requests.Session()
def rec_request(*args, **kwargs):
key = hash_args(args, kwargs)
if key in recorded:
return pickle.loads(recorded[key])
response = do_request(*args, **kwargs)
recorded[key] = pickle.dumps(response)
return response
do_request = session.request
session.request = rec_request
yield session
session.request = do_request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment