2017-02-06 12 views
1

Я использую bottlenose для запросов от Amazon, а затем разбираю ответ с помощью BeautifulSoup.Тот же сценарий на двух компьютерах, только один получает HTTP-ошибку 400

У меня есть тот же самый скрипт python на моем Mac, а также на малине-пи.

#!/usr/bin/python 
import sys 
import ids 
import csv 
import bottlenose as BN 
import lxml 
import datetime 
import os 
from bs4 import BeautifulSoup 
import numpy 
import time 
from urllib2 import HTTPError 


def error_handler(err): 
    ex = err['exception'] 
    if isinstance(ex, HTTPError) and ex.code == 503: 
     time.sleep(random.expovariate(0.1)) 
     return True 

amazon = BN.Amazon(AWSKEY,AWSSECRET,AWSID,Region='UK',     MaxQPS=0.8, ErrorHandler=error_handler) 

isbnclean = '0521663962' 

response = amazon.ItemLookup(ItemId=isbnclean, ResponseGroup="Large") 
print response 
print 'Test Done' 

Так что этот сценарий будет работать прекрасно на мой макинтош и напечатать ответ, но на R-Pi возвращает:

File "SimpleTest.py", line 24, in <module> 
    response = amazon.ItemLookup(ItemId=isbnclean,  ResponseGroup="Large") 
    File "/usr/local/lib/python2.7/dist-packages/bottlenose/api.py", line 265, in __call__ 
    {'api_url': api_url, 'cache_url': cache_url}) 
    File "/usr/local/lib/python2.7/dist-packages/bottlenose/api.py", line 226, in _call_api 
    return urllib2.urlopen(api_request, timeout=self.Timeout) 
    File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen 
    return opener.open(url, data, timeout) 
    File "/usr/lib/python2.7/urllib2.py", line 437, in open 
    response = meth(req, response) 
    File "/usr/lib/python2.7/urllib2.py", line 550, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib/python2.7/urllib2.py", line 475, in error 
    return self._call_chain(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 558, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 400: Bad Request 

Единственное, что отличается в том, что на R-Pi, from urllib2 import HTTPError необходим, тогда как на маке он будет работать без него. Я не уверен, где это происходит неправильно, поскольку я имел обыкновение запускать скрипт на R-Pi отлично.

ответ

-1

AWS отметит 400 ошибок с плохими запросами по нескольким причинам. В моем случае временная метка малины Pi по какой-то причине не соответствовала истинному времени, и поэтому просьбы об амазонке были остановлены.

Подробнее можно здесь AWS Error Codes