【发布时间】:2015-10-27 18:39:09
【问题描述】:
我正在使用 API 来执行返回 JSON 的 HTTP 请求。然而,api 的调用取决于要指示的开始页面和结束页面,例如:
def API_request(URL):
while(True):
try:
Response = requests.get(URL)
Data = Response.json()
return(Data['data'])
except Exception as APIError:
print(APIError)
continue
break
def build_orglist(start_page, end_page):
APILink = ("http://sc-api.com/?api_source=live&system=organizations&action="
"all_organizations&source=rsi&start_page={0}&end_page={1}&items_"
"per_page=500&sort_method=&sort_direction=ascending&expedite=1&f"
"ormat=json".format(start_page, end_page))
return(API_request(APILink))
了解您是否不再位于现有页面的唯一方法是 JSON 何时为空,例如 this。
如果我想对每个页面异步执行多个 build_orglist 直到我到达末尾(Null JSON),我该怎么做?
【问题讨论】:
-
看看 Python 多处理:gouthamanbalaraman.com/blog/…
-
@AlexReynolds 我之前快速浏览过多处理,真正困扰我的是我无法为此制定逻辑。我以前从未使用过并行性,这证明自己有点挑战性。大多数时候,我只是无法在脑海中制定这个逻辑。
-
python 3 中有
asyncio,Tornado:tornadoweb.org/en/stable 和其他异步库... -
@Arengorn 您是否希望使用并行性来提高性能?如果是这样,首先确保您使用的是sessions!这将为您提供持久的 HTTP 连接,从而大幅提升对同一主机的重复请求的性能。
-
@LukasGraf,我确实在做这件事,因为我需要做很多请求,而且速度很慢,所以我认为并行是要走的路。我对会议一无所知!我马上试试看结果,谢谢!
标签: python json http asynchronous python-requests