python - 如何将多个 url 合并到一个 get 函数 python
问题描述
我有下面的 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 循环时,它可以工作,但看起来像重写了 return 函数,因此只返回单个 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)
推荐阅读
- pandas - 大熊猫的指数移动平均线
- c - 将位域结构转换为二进制格式
- go - 将app.yaml从go114更新到go115时如何处理`app_engine_apis`警告
- laravel-livewire - Livewire:嵌套组件正在调用父类而不是子类的属性
- sql-server - 两列上的 DENSE_RANK,其中一列是不同的值,另一列是重复的
- java - 我们可以在生产中使用 CrossOrigin *(通配符)吗
- c - 从静态 pad 模板创建 gst pad [GStreamer 管道]
- serialization - 使用嵌套通配符对象序列化类
- postgresql - 为什么 Heroku 建议使用 pg:upgrade insted 的 pg:copy?
- python - 为什么输入框在 tkinter 中重叠滚动条?