Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在while循环中检查请求响应_Python - Fatal编程技术网

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,并且所有响应的长度必须等于
符号的长度,我在这里没有提到
,如果响应不是您想要的,则循环将由于
中断而结束。如果要重试,请使用
继续
。您可以使用
提升属性错误
转到
块,它将休眠并重试。