Python 在while循环中检查请求响应
我正在使用Python 在while循环中检查请求响应,python,Python,我正在使用grequests模块向网站发送多个请求。我想检查响应是否符合我的要求,因为有时服务器无法正确响应。响应是一个简单的字符串 这是其中一个URL的示例: 我想检查每个响应的长度以及我得到的所有响应的长度。我尝试了以下代码: def online_data(): while True: try: l = [] rs = (grequests.get(u, timeout = 1) for u in urls)
grequests
模块向网站发送多个请求。我想检查响应是否符合我的要求,因为有时服务器无法正确响应。响应是一个简单的字符串
这是其中一个URL的示例:
我想检查每个响应的长度以及我得到的所有响应的长度。我尝试了以下代码:
def online_data():
while True:
try:
l = []
rs = (grequests.get(u, timeout = 1) for u in urls)
requests = grequests.map(rs)
for response in requests:
l.append(response.text.split(','))
response.close()
for i in l:
if len(i) > 13:
break
for i in l[:14]:
if i:
break
if len(l) == len(symbols):
break
except AttributeError:
time.sleep(2)
continue
return l
但我不确定我是否做对了
在if语句中,我想检查我得到的响应是否是我想要的,如果不是,我想从while循环的开始重复该函数。如果你想在响应不满足你的条件时重试,你应该
提高AttributeError
,这样你就可以转到除了语句,而不是打破循环
def online_data():
while True:
try:
l = []
rs = (grequests.get(u, timeout = 1) for u in urls)
requests = grequests.map(rs)
for response in requests:
l.append(response.text.split(','))
response.close()
for i in l:
if len(i) > 13:
raise AttributeError
for i in l[:14]:
if i:
raise AttributeError
if len(l) == len(symbols):
raise AttributeError
except AttributeError:
time.sleep(2)
continue
return l
rs
函数做什么?很难说它是否检查响应是否是您想要的,因为我们不知道您想要什么。@Barmar我只想知道如何检查我得到的响应是否是我想要的。If语句是我的条件。每个响应的长度必须大于13,并且所有响应的长度必须等于符号的长度,我在这里没有提到,如果响应不是您想要的,则循环将由于中断而结束。如果要重试,请使用继续
。您可以使用提升属性错误
转到除
块,它将休眠并重试。