def test_timeout(monkeypatch):
    """
    Check that in case of a timeout API will not give up easily.
    """

    class mock_fetch (object):
        def __init__(self):
            self.calls = 0
        def __call__(self, _, url):
            self.calls += 1
            print('call {0}: {1}'.format(self.calls, url))
            raise URLError(socket.timeout())

    fetcher = mock_fetch()
    monkeypatch.setattr(API, '_fetch', fetcher)

    api = RetryAPI(locale='de')

    itworked = False
    try:
        api.call(operation='DummyOperation')
        itworked = True
    except URLError:
        e = sys.exc_info()[1]  # Python 2/3 compatible
        assert isinstance(e.reason, socket.timeout)

    # timeout WAS raised and fetch was called TRIES times
    assert not itworked
    assert fetcher.calls == api.TRIES
Пример #2
0
def amz_get_info(url):
    params = {'ResponseGroup': 'Images'}

    m = re.match(r'^https?://(?:www.)?amazon\.(.*?)(?:\:[0-9]+)?/.*/([0-9B][0-9A-Z]{9})(?:[^0-9A-Z]|$)', url)
    if m is None:
        return (None, None)

    locale = m.group(1).replace('co.', '').replace('com', 'us')
    asin = m.group(2)
    amazon_api = RetryAPI(cfg.AWS_KEY, cfg.AWS_SECRET_KEY, locale, cfg.AWS_ASSOCIATE_TAG)

    try:
        root = amazon_api.item_lookup(asin, **params)
    except amazonproduct.errors.InvalidParameterValue, e:
        return (None, None)
def amz_get_info(url):   
    params = { 'ResponseGroup' : 'Images' }
    
    m = re.match(r'^https?://(?:www.)?amazon\.(.*?)(?:\:[0-9]+)?/.*/([0-9B][0-9A-Z]{9})(?:[^0-9A-Z]|$)', url)
    if m is None:
        return (None, None)
        
    locale = m.group(1).replace('co.', '').replace('com', 'us')
    asin = m.group(2)   
    amazon_api = RetryAPI(cfg.AWS_KEY, cfg.AWS_SECRET_KEY, locale, cfg.AWS_ASSOCIATE_TAG)
    
    try:
        root = amazon_api.item_lookup(asin, **params)
    except amazonproduct.errors.InvalidParameterValue, e:
        return None
def test_timeout(monkeypatch):
    """
    Check that in case of a timeout API will not give up easily.
    """

    class mock_fetch (object):
        def __init__(self):
            self.calls = 0
        def __call__(self, _, url):
            self.calls += 1
            print 'call %i: %s' % (self.calls, url)
            raise URLError(socket.timeout())

    fetcher = mock_fetch()
    monkeypatch.setattr(API, '_fetch', fetcher)

    api = RetryAPI(locale='de')

    itworked = False
    try:
        api.call(operation='DummyOperation')
        itworked = True
    except URLError, e:
        assert isinstance(e.reason, socket.timeout)