Note that there are some explanatory texts on larger screens.

plurals
  1. POTimeout not working using urllib2, socks5 proxy and socksipy
    primarykey
    data
    text
    <p>I'm using socksipy with urllib2 in Python 2.6. Everything works fine except the timeouts when i hit a hanging URL. None of the urllib2 function timeout arguments or global socket default timeouts are working. I've even tried setting the timeout a number of different ways in the sublcassed handlers below with no success. Any ideas?</p> <p>Here is a test script (assuming that you have the socksipy project installed and are adding it to your system path):</p> <pre><code>import os, sys import httplib sys.path.append( "/parent/path/to/socksipy/project" ) import socks # import socksipy import socket socket.setdefaulttimeout(30.0) import urllib2 class SocksiPyConnection(httplib.HTTPConnection): def __init__(self, proxytype, proxyaddr, proxyport = None, rdns = False, username = None, password = None, *args, **kwargs): self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password) httplib.HTTPConnection.__init__(self, *args, **kwargs) def connect(self): self.sock = socks.socksocket() self.sock.setproxy(*self.proxyargs) if isinstance(self.timeout, float): self.sock.settimeout(self.timeout) self.sock.connect((self.host, self.port)) class SocksiPyHandler(urllib2.HTTPHandler): def __init__(self, *args, **kwargs): self.args = args self.kw = kwargs urllib2.HTTPHandler.__init__(self) def http_open(self, req): def build(host, port=None, strict=None, timeout=0): conn = SocksiPyConnection(*self.args, host=host, port=port, strict=strict, timeout=timeout, **self.kw) return conn return self.do_open(build, req) if __name__ == '__main__': # # this one works for non-hanging URL # proxyhost = "responder.w2" proxyport = 1050 socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyhost, int(proxyport)) socket.socket = socks.socksocket resp = urllib2.urlopen("http://www.google.com", timeout=30.0) # hang here print "returned 1" # # one way to go about it for a hanging URL # proxyhost = "responder.w2" proxyport = 1050 socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyhost, int(proxyport)) socket.socket = socks.socksocket resp = urllib2.urlopen("http://erma.orr.noaa.gov/cgi-bin/mapserver/charts?version=1.1.1&amp;service=wms&amp;request=GetCapabilities", timeout=30.0) # it hangs here print "returned 2" # # another way to go about it for hanging URL # proxyhost = "responder.w2" proxyport = 1050 opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, proxyhost, int(proxyport)) ) resp = opener.open("http://erma.orr.noaa.gov/cgi-bin/mapserver/charts?version=1.1.1&amp;service=wms&amp;request=GetCapabilities", timeout=30.0) # it hangs here print "returned 3" </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload