From: <jua...@ja...> - 2003-01-06 21:00:26
|
I have the same problem described below. There is any solution at this time? Regards, Juan Manuel Rodr=EDguez. >>Im getting an AttributeError in the httplib.py standard library when >>using urlretrieve(): >> >>Traceback (innermost last): >> File "FutureSourceSpider.py", line 86, in ? >> File "c:\software\jython\Lib\urllib.py", line 68, in urlretrieve >> File "c:\software\jython\Lib\urllib.py", line 198, in retrieve >> File "c:\software\jython\Lib\urllib.py", line 169, in open >> File "c:\software\jython\Lib\urllib.py", line 273, in open_http >> File "c:\software\jython\Lib\httplib.py", line 430, in putrequest >>AttributeError: __getitem__ >> >>The line throwing the error in inside an exception handler: >> try: >> self.send(str) >> except socket.error, v: >> # trap 'Broken pipe' if we're allowed to automatically >>reconnect >>>>>> if v[0] !=3D 32 or not self.auto_open: <<<<< >> raise >> # try one more time (the socket was closed; this will >>reopen) >> self.send(str) >> >>I instrumented this code and determined that it executes when there is= a >>timeout setting up a socket connection. This timeout condition is for = my >>purpoises, transient and non-fatal. >>The underlying message: java.net.NoRouteToHostException: Operation tim= ed >>out: no further information >> >>Possibly because this section rarely executes, a bug has gone >>undiscovered? >> >>I dont fully understand what would cause the AttributeError on the lin= e >>above, can someone explain? >In CPython, the exception would have been a subclass of Exception, whic= h >defines a __getitem__ method. Index 0 would then contain the error >number and index 1 an textual description. So the httplib will most >likely work on CPython. > >OTOH, the java exception is just passed back from the jython socket >module. This exception can not be indexed as a list, therefore we get >the AttributeError: __getitem__. There is also no error number in a jav= a >exception. > >I'm not yet sure what the right long term solution is. Either httplib >could test that the exception is a sequence before doing any indexing. >Or the socket module could catch the java.net exception and reraise it >as a SocketException. > >Can anyone tell when the resend condition should occur under jython? > >regards, >finn |