在while循环中检查请求响应

2024-06-30 16:49:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用grequests模块向网站发送多个请求。我想检查响应是否是我想要的,因为有时服务器不能正确响应。响应是一个简单的字符串

这是其中一个URL的示例: http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=22811176775480091&c=39+

我想检查每个响应的长度以及我得到的所有响应的长度。我尝试了以下代码:

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循环的开始重复这个函数


Tags: 模块字符串in服务器fordatalenif
1条回答
网友
1楼 · 发布于 2024-06-30 16:49:08

如果您想在响应不满足您的条件时重试,您应该raise AttributeError,这样您就可以转到except语句,而不是跳出循环

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

相关问题 更多 >