0

我想查詢一些搜索結果的API。我首先得到搜索結果返回的結果數量,然後產生等於我擁有的結果頁數的線程數。但是,當頁數越來越高時,即使我爲所生成的所有URL使用相同的API密鑰,我也開始從urllib2獲取不一致的HTTP錯誤401。每次錯誤都會發生在不同的URL上。首先,這是查詢跨越多個頁面(超過一千個)的信息的API的最佳方式。其次,爲什麼我得到這個錯誤?多線程GET請求與Python:錯誤401

def worker(pageNum): 
    pageDetails = urllib2.urlopen(generateUrl(pageNum), timeout=1000).read() 
    pageDetails = json.loads(pageDetails) 
    #print pageDetails 
    print str(pageNum) + "\n" 
    return 

def parallelRun(totalPages): 
    pageList = range(totalPages) 
    threads = [] 
    for pageNum in pageList: 
     t = threading.Thread(target=worker, args=(pageNum,)) 
     threads.append(t) 

    for thread in threads: 
     thread.start() 

    for thread in threads: 
     thread.join() 
    return 

parallelRun(numPages) 

回答

0

如果你改變你的工人是這樣的:

def worker(pageNum): 
    try: 
     pageDetails = urllib2.urlopen(generateUrl(pageNum), timeout=1000).read() 
     pageDetails = json.loads(pageDetails) 
     #print pageDetails 
     print str(pageNum) + "\n" 
     return 
    except urlib2.HTTPError as err: 
     print err.reason 
     print err.read() 
     raise 

你會得到什麼是怎麼了更詳細的信息。