[issue30956] ftplib socket timeout can't be handled
R. David Murray
report at bugs.python.org
Mon Jul 17 20:53:31 EDT 2017
R. David Murray added the comment:
Given:
import socket
from ftplib import FTP
try:
ftp = FTP('host.i.know.will.hang.com', timeout=4)
except socket.timeout:
print('caught')
I see 'caught' printed on the console. However, if I increase the timeout to 400, then on both 3.5 tip and 3.6 tip I get a TimeoutError, not a socket.timeout. If I increase the timeout to 4000, I get the TimeoutError in a much shorter time than 4000 seconds.
So, *something* is wrong here. Looking at the code it isn't obvious what.
Here is the traceback:
Traceback (most recent call last):
File "../p36/temp.py", line 4, in <module>
ftp = FTP('xxxx', timeout=4)
File "/home/rdmurray/python/p35/Lib/ftplib.py", line 118, in __init__
self.connect(host)
File "/home/rdmurray/python/p35/Lib/ftplib.py", line 153, in connect
source_address=self.source_address)
File "/home/rdmurray/python/p35/Lib/socket.py", line 712, in create_connection
raise err
File "/home/rdmurray/python/p35/Lib/socket.py", line 703, in create_connection
sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out
Your traceback is different because your timeout is occurring after the initial connection. Are you sure your socket.timeout is the correct one? You might try printing socket.__file__ to check.
----------
nosy: +r.david.murray
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue30956>
_______________________________________
More information about the Python-bugs-list
mailing list