如何将多个url合并到get-function python中



我有一个Below Python函数,它可以获取查询url的警报,这是有效的。

然而,我不得不对url部分进行更多的查询,但我无法弄清楚。

以下是工作函数:

BASE_URL = "https://synergy.hpe.example.com/rest/"
def get_alerts(session, session_id):
try:
return session.get(
url=f"{BASE_URL}/resource-alerts"
headers={
"accept": "application/json",
"content-type": "text/csv",
"x-api-version": "2",
"auth": session_id,
},
verify=False,
stream=True
)

我需要循环处理多个警报查询以及BASE_URL:

"/resource-alerts?count=500&start=501"
"/resource-alerts?count=500&start=1001"
"/resource-alerts?count=500&start=15001",

我用for循环尝试过的内容:

在执行for循环时,它可以工作,但看起来像是重写了返回函数,因此只返回单个get alert查询的输出。

qr = [ 'resource-alerts', 'resource-alerts?count=500&start=501', 'resource-alerts?count=500&start=1001', 'resource-alerts?count=500&start=1501' ]
def get_resource_alerts_response(session, session_id):
try:
for res in qr:
return session.get(
url=f"{BASE_URL}{res}",
#url=f"{BASE_URL}/resource-alerts?count=-1",
headers={
"accept": "application/json",
"content-type": "text/csv",
"x-api-version": "2",
"auth": session_id,
},
verify=False,
stream=True
)
except requests.exceptions.RequestException as req_exception:
raise ResourceAlertsRetrievalFailure(
f"Could not fetch resource alerts: {req_exception}"
)

由于您提交的代码不允许我重现问题,所以有点伪造:

ResourceAlertsRetrievalFailure = Exception
class FakeGetRequest:
def get(self, *args, **kwargs):
print("GET ", tuple(args), dict(kwargs))
session_id = "..."
session = FakeGetRequest()

我可以让你的代码工作:

import requests
BASE_URL = "https://synergy.hpe.example.com/rest/"
qr = ['resource-alerts',
'resource-alerts?count=500&start=501',
'resource-alerts?count=500&start=1001',
'resource-alerts?count=500&start=1501']

def get_resource_alerts_response(session, session_id):
try:
return session.get(
url=f"{BASE_URL}{res}",
headers={
"accept": "application/json",
"content-type": "text/csv",
"x-api-version": "2",
"auth": session_id,
},
verify=False,
stream=True
)
except requests.exceptions.RequestException as req_exception:
raise ResourceAlertsRetrievalFailure(
f"Could not fetch resource alerts: {req_exception}"
)
for res in qr:
get_resource_alerts_response(session, session_id)

最新更新