如何在 Python 中的特定时间后循环结束请求?
How can I end a request in a loop after a certain time in Python?
我的 Python-程序应该(或已经可以)向网站列表发送请求以测试它们是否存在。然后它应该将结果(无论是否存在)保存在列表中或之后保存在文件中。到目前为止效果很好。但是我总是收到一些网站的错误消息,看起来像这样:
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='www.oderwald.de', port=80): Read timed out. (read timeout=60)
我认为问题在于该网站只是不发送响应并不断询问该程序。
到目前为止,我的程序如下所示:
import requests
from requests.exceptions import ConnectionError
with open("list_website.txt") as infile:
list = [list.strip() for list in infile]
list_ge = []
list_ne = []
x=0
n=0
g=0
i=0
for i in range(len(list)):
try:
request = requests.get('http://www.' + list[i] + ".de")
except ConnectionError:
list_ne.append(list[i])
g=+1
file = open('not_working.txt','a')
file.write(list[i]+ "\n")
else:
list_ge.append(list[i])
n=+1
file2 = open('works.txt','a')
file2.write(liste[i] + "\n")
print(list_ge)
print(list_ne)
有谁知道我该如何解决这个问题?非常感谢。
编辑:
要使异常提前 return(不是默认的 60 秒),请更改行
request = requests.get('http://www.' + list[i] + ".de")
至
request = requests.get('http://www.' + list[i] + ".de", timeout = 2)
,其中 2 是您最多愿意等待的秒数。
初始post如下:
您尝试访问的网站 (www.oderwald.de) 没有在指定的时间内响应(在您的情况下为 60 秒),因此这种行为是可以预料的。由于它只是一个异常,您可以使用 except
语句来处理它。见下文:
try:
request = requests.get('http://www.' + list[i] + ".de")
except requests.exceptions.ReadTimeout:
print("Read timeout occurred")
# The website exists but does not respond.
# Decide to which category you assign it.
另外 list()
指的是一个内置的 Python 函数,您正在这一行中覆盖它:list = [list.strip() for list in infile]
。请改用其他变量名。
我的 Python-程序应该(或已经可以)向网站列表发送请求以测试它们是否存在。然后它应该将结果(无论是否存在)保存在列表中或之后保存在文件中。到目前为止效果很好。但是我总是收到一些网站的错误消息,看起来像这样:
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='www.oderwald.de', port=80): Read timed out. (read timeout=60)
我认为问题在于该网站只是不发送响应并不断询问该程序。 到目前为止,我的程序如下所示:
import requests
from requests.exceptions import ConnectionError
with open("list_website.txt") as infile:
list = [list.strip() for list in infile]
list_ge = []
list_ne = []
x=0
n=0
g=0
i=0
for i in range(len(list)):
try:
request = requests.get('http://www.' + list[i] + ".de")
except ConnectionError:
list_ne.append(list[i])
g=+1
file = open('not_working.txt','a')
file.write(list[i]+ "\n")
else:
list_ge.append(list[i])
n=+1
file2 = open('works.txt','a')
file2.write(liste[i] + "\n")
print(list_ge)
print(list_ne)
有谁知道我该如何解决这个问题?非常感谢。
编辑:
要使异常提前 return(不是默认的 60 秒),请更改行
request = requests.get('http://www.' + list[i] + ".de")
至
request = requests.get('http://www.' + list[i] + ".de", timeout = 2)
,其中 2 是您最多愿意等待的秒数。
初始post如下:
您尝试访问的网站 (www.oderwald.de) 没有在指定的时间内响应(在您的情况下为 60 秒),因此这种行为是可以预料的。由于它只是一个异常,您可以使用 except
语句来处理它。见下文:
try:
request = requests.get('http://www.' + list[i] + ".de")
except requests.exceptions.ReadTimeout:
print("Read timeout occurred")
# The website exists but does not respond.
# Decide to which category you assign it.
另外 list()
指的是一个内置的 Python 函数,您正在这一行中覆盖它:list = [list.strip() for list in infile]
。请改用其他变量名。