我正在用机械化使一些东西自动化。我有一个工作程序,它登录到一个站点并在登录时转到一个页面。但是,有时我只是得到URLError
表明连接已超时,每当我通过 mechanize 执行任何操作时:
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
实际上没有连接问题。
编辑:我还注意到,如果我这样做 - 立即重试 - 它通常会起作用,但接下来我会再次失败,等等。
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