我对这一切都很陌生;我需要为我正在写的一篇论文获取数千个 sourceforge 项目的数据。这些数据都以 json 格式免费提供,网址为 http://sourceforge.net/api/project/name/[project name]/json。我有数千个这些 URL 的列表,我正在使用以下代码。
import grequests
rs = (grequests.get(u) for u in ulist)
answers = grequests.map(rs)
使用此代码,我可以获得我喜欢的任何 200 个左右项目的数据,即rs = (grequests.get(u) for u in ulist[0:199])
有效,但一旦我完成,所有尝试都会遇到
ConnectionError: HTTPConnectionPool(host='sourceforge.net', port=80): Max retries exceeded with url: /api/project/name/p2p-fs/json (Caused by <class 'socket.gaierror'>: [Errno 8] nodename nor servname provided, or not known)
<Greenlet at 0x109b790f0: <bound method AsyncRequest.send of <grequests.AsyncRequest object at 0x10999ef50>>(stream=False)> failed with ConnectionError
在我退出 python 之前,我无法再发出任何请求,但是一旦我重新启动 python,我就可以再发出 200 个请求。
我试过使用grequests.map(rs,size=200)
,但这似乎无济于事。