如何在python中为GET请求添加轮询间隔
Posted
技术标签:
【中文标题】如何在python中为GET请求添加轮询间隔【英文标题】:How to add polling interval for a GET request in python 【发布时间】:2021-05-23 18:43:14 【问题描述】:我有一个案例,我必须不断检查 GET 调用的响应,直到我在 api 响应中看到 status
为 success
。从active
到success
的状态大约需要 20 到 50 分钟。只有当我看到此状态时,我才能执行其他操作。
如何在 python 中实现这一点?
我试过这个polling python 库。但这并没有多大帮助。
这是我的代码。但这不是我想要的。有没有其他方法可以做到这一点?
try:
while True:
response = requests.get(f'os.environ["BASE_URL"]/syncs/076532', headers=headers)
json_res = response.json()
if json_res.get('status') != 'success':
logging.info("Polling started.......")
logging.info("Waiting.......")
time.sleep(120)
print("Got status as success. Proceeding......")
sys.exit()
except KeyboardInterrupt:
logging.info("exiting")
sys.exit()
提前致谢
【问题讨论】:
它应该做什么不做什么?你可以有几个 except 块来处理不同的异常(例如没有 JSON 响应或超时) 哦,当您成功阅读时,您想break
或return
然后继续您的while
循环(这样会发出 new 请求每次迭代,而不是目前只有一个..这可以通过continue
在睡眠后修复)..看看文档break and continue Statements, and else Clauses on Loops
【参考方案1】:
你可以试试这个:
def custom_request(url: str, headers: dict):
if requests.get(url=url, headers=headers).json().get('status') != 'success':
logging.info("Polling started.......")
logging.info("Waiting.......")
return False
return True
def main():
try:
polling.poll(
custom_request,
step=60,
args=(f'os.environ["BASE_URL"]/syncs/076532', headers),
poll_forever=True
)
print("Got status as success. Proceeding......")
exit()
except KeyboardInterrupt:
logging.info("exiting")
exit()
您在使用投票时遇到了哪些困难?
【讨论】:
我得到了答案。我的回答来源于你的回答。它与给出的并不完全相同。但它与它相似。以上是关于如何在python中为GET请求添加轮询间隔的主要内容,如果未能解决你的问题,请参考以下文章