使用python进行多线程GET请求:错误401

时间:2014-02-24 06:40:45

标签: python multithreading python-multithreading http-status-code-401

我正在尝试查询某些搜索结果的API。我首先得到我的搜索返回的结果数,然后产生的线程数等于我拥有的结果页数。但是,当页面数量增加时,我开始从urllib2获得不一致的HTTP错误401,即使我对我生成的所有URL使用相同的API密钥。每次都会在不同的URL上发生错误。首先,这是查询API以获取跨越多个页面(超过一千个)的信息的最佳方式。其次,为什么我会得到这个错误?

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)

1 个答案:

答案 0 :(得分: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

您将获得有关出错的更多详细信息。