- 在这里,在代码中。在下面的API中,我一次最多只能使用5个值(API限制)。*
import requests
import json
import datetime
from datetime import date, datetime
import itertools
from sentimeterdb import dbconnect
from dotenv import load_dotenv #for python-dotenv method
load_dotenv() #for python-dotenv method
import os
#Connection string pointing to the PROD db.
dbclient = dbconnect.process()
db = dbclient.abc
co_open = db.open_ab
myquery = {"bugs" : {"$ne" : {}, "$exists": True}}
mydoc = co_open.find(myquery)
lst = []
for x in mydoc:
y = x.get('bugs')
id_list = lst.append([*y.values()])
cdets = list(itertools.chain(*lst))
cdets_split = cdets
string_cdets = ','.join(cdets_split[:5])
Access_URL = 'https://generating-token-from--here/oauth2/default/v1/token'
client_id = os.environ.get('CLIENT_ID')
client_secret = os.environ.get('CLIENT_SECRET')
grant_type = os.environ.get('GRANT_TYPE')
BASE_URL = f'https://google.com/{string_cdets}'
response = requests.post(Access_URL,
data={'grant_type': grant_type, 'client_id': client_id, 'client_secret': client_secret, 'content-type': 'application/x-www-form-urlencoded'})
json_response = response.json()
tokenvalue = (json_response['access_token'])
headers = {'Authorization': 'Bearer ' +
tokenvalue, 'Content-Type': 'application/json'}
auth_response = requests.get(BASE_URL, headers=headers)
auth_response_json = auth_response.json()
severity_list = []
for severity_5 in auth_response_json['bugs']:
severity_list.append([severity_5['severity']])
print ("Severity ==> ", severity_list)
应提供所有CDET的严重度和状态。目前,它只提供5个项目。我怎样才能得到所有CDET的回复?
2条答案
按热度按时间oiopk7p51#
我不确定我是否理解了这个问题,但是使用生成器根本不会影响复杂性。一个
for
循环是非常好的。如果值('ABC'、'DEF'等)是动态生成的,则生成器将是有用的。在这种情况下,您可以使用
for
循环在生成器上循环。qq24tv8q2#
itertools文档中有一个名为
batched
的函数的配方,该函数可用于从可迭代对象生成任意大小的“块”。answer given here也可能有用。
无论如何,正如您已经猜到的,您最终将把这些块传递到
for
循环中,以进行API调用。我不确定是否有一种方法可以在不调用多个API的情况下做到这一点。采用这种分块列表的方法本质上意味着您将不得不进行调用,直到您的列表耗尽。
**编辑:**以下来自OP的更新
如果更改的是
BASE_URL
的值,则只需从cdets
循环“批处理”,根据需要更新BASE_URL
并将其传递给requests.get(BASE_URL, headers=headers)
另外,
BASE_URL
实际上应该样式为base_url
,因为它是一个值会改变的变量-所有大写通常用于暗示CONSTANT
值,而BASE_URL
绝对不是