我正在通过机械化自动化一些东西。我有一个工作程序登录到一个站点并在登录时转到一个页面。但是,有时我只是得到URLError
声明连接已经超时,每当我通过机械化做任何事情时:
URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>
如果我重新启动程序或重新尝试尝试,它将正常工作。如果我使用Chrome访问同一网站,无论我多久尝试登录一次,它都不会超时。
可能是什么原因造成的?听起来机械化正在做一些不理想的事情。我在不同的网站上也有类似的模式 - URLError
s,实际上没有连接问题。
编辑:我也注意到如果我这样做 - 立即重试 - 它经常有效,但是接下来我会再次失败,等等。
last_response = ...
for attempt in (1, 2):
try:
self.mech.select_form(nr=0)
self.mech[self.LOGIN_FORM_DATA[1]] = self.user
self.mech[self.LOGIN_FORM_DATA[2]] = self.password
resp = self.mech.submit()
html = resp.read()
resp.close()
except mechanize.URLError:
self.error("URLError submitting form, trying again...")
self.mech.set_response(last_response) #reset the response
continue
break