def test_cache_memoize_custom_alias():

    calls_made = []

    def runmeonce(a):
        calls_made.append(a)
        return a * 2

    runmeonce_default = cache_memoize(10)(runmeonce)
    runmeonce_locmem = cache_memoize(10, cache_alias="other")(runmeonce)

    runmeonce_default(10)
    assert len(calls_made) == 1
    runmeonce_default(10)
    assert len(calls_made) == 1
    runmeonce_locmem(10)
    assert len(calls_made) == 2
    runmeonce_locmem(10)
    assert len(calls_made) == 2
예제 #2
0
    FeedItem,
    Profile,
    ShortCode,
    NoLocation,
)

class MyClient(Client):

    @staticmethod
    def _extract_rhx_gis(html):
        options = string.ascii_lowercase + string.digits
        text = ''.join([random.choice(options) for _ in range(8)])
        return hashlib.md5(text.encode()).hexdigest()

web_api = MyClient(auto_patch=True, drop_incompat_keys=False)
web_api.user_info = cache_memoize(3600)(web_api.user_info)
web_api.user_feed = cache_memoize(3600)(web_api.user_feed)
web_api.location_feed = cache_memoize(3600)(web_api.location_feed)
web_api.media_info2 = cache_memoize(3600)(web_api.media_info2)


def catch_keyerrors(fn):
    @functools.wraps(fn)
    def wrapped(*args, **kwargs):
        try:
            return fn(*args, **kwargs)
        except KeyError:
            raise

    return wrapped