PYTHON - 我正在尝试在 python 中发出多个 api 请求,但这花费了太多时间

问题描述 投票:0回答:1

我正在尝试创建一个脚本,对我国的公共合同 API 进行 api 调用,并使用 json 文件进行响应。 json 文件有一个合约列表,其中包含不同的信息,每个合约都称为compileRelease,它看起来像这样:

"records": [
    {
      "compiledRelease": {
        "awards": [
          {
            "suppliers": [
              {
                "name": "WINNER S. R. L.",
                "id": "PY-RUC-80010090-5"
              }
              "id": "award id(number)"
            ],
         }
       ]
    }
    {
      "compiledRelease": {
        "awards": [
          {
            "suppliers": [
              {
                "name": "WINNER S. R. L.",
                "id": "PY-RUC-80010090-5"
              }
              "id": "award id(number)"
            ],
         }
            "suppliers": [
              {
                "name": "WINNER S. R. L.",
                "id": "PY-RUC-80010090-5"
              }
              "id": "award id(number)"
            ],
         }
       ]
    }

一个合约里面可以有多个奖励,为了获得每个奖励的完整信息,我必须使用奖励的 id 再次调用 api,我遇到的问题是进行这些调用需要花费太多时间考虑到我已经编译了一百个版本,有些奖项可能有数百个 ID。我正在尝试做这样的事情:

`

for item in records:
  for award in item[compiledRelease][awards]:
    data = api_call_function(award[id])
    \do something with the data\

这就是我所拥有的,并且需要很长时间才能完成所有请求,我环顾四周,发现了异步函数和多线程,但它们看起来像是在有一个 url 数组的调用中使用,但我不确定如何在这样的情况下使用它:您有一个嵌套循环,并且必须进行调用并继续该函数,并让调用在后台解析。

如果有人能教我如何做,我将不胜感激,谢谢。希望我能解释清楚。

python api performance loops call
1个回答
0
投票

使用 Python 的

ThreadPoolExecutor
 模块的 
concurrent.futures
类在线程池中异步调用您的
api_call_function()
函数。

© www.soinside.com 2019 - 2024. All rights reserved.