https://bugzilla.wikimedia.org/show_bug.cgi?id=66063
Bug ID: 66063 Summary: network errors not handled correctly Product: Pywikibot Version: core (2.0) Hardware: All OS: All Status: NEW Severity: normal Priority: Unprioritized Component: General Assignee: Pywikipedia-bugs@lists.wikimedia.org Reporter: jayvdb@gmail.com Web browser: --- Mobile Platform: ---
In the event of a http issue of any kind, pywiki will retry 25 times by default, with a 2 minute delay, meaning a 50 minute wait until it returns to the command line unless the user interrupts the process with ^C.
Each retry it will print an exception.
In the case I am seeing now, the issue is a firewall preventing access to the wiki. The firewall immediately responds, so this is not a timeout, and 25 retries 2 minutes apart will not magically make the problem disappear.
WARNING: Waiting 120 seconds before retrying. ERROR: Traceback (most recent call last): File "..pywikibot/data/api.py", line 306, in submit body=paramstring) File "..pywikibot/comms/http.py", line 155, in request raise request.data error: ...
And at the end it will print a long traceback, ending with
File "..pywikibot/data/api.py", line 434, in wait raise TimeoutError("Maximum retries attempted without success.") pywikibot.data.api.TimeoutError <class 'pywikibot.data.api.TimeoutError'> CRITICAL: Waiting for 1 network thread(s) to finish. Press ctrl-c to abort
The error need not have been a TimeoutError - all http errors are reported as a TimeoutError.
The http layer should differentiate real timeout errors from other errors that it can not fix (especially permanent errors like 403 being caused by a firewall).