【问题标题】:Asynchronous JSON Requests in PythonPython 中的异步 JSON 请求
【发布时间】: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


【解决方案1】:

我混合了@LukasGraf 的答案,即使用会话将我的所有 HTTP 连接统一到一个会话中,并使用grequests 来并行创建一组 HTTP 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2019-07-18
    • 2015-06-07
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多