1

我正在用机械化使一些东西自动化。我有一个工作程序,它登录到一个站点并在登录时转到一个页面。但是,有时我只是得到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
4

0 回答 0