2010-04-03 56 views
0
def download(source_url): 
    socket.setdefaulttimeout(10) 
    agents = ['Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)','Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)','Microsoft Internet Explorer/4.0b1 (Windows 95)','Opera/8.00 (Windows NT 5.1; U; en)'] 
    ree = urllib2.Request(source_url) 
    ree.add_header('User-Agent',random.choice(agents)) 
    resp = urllib2.urlopen(ree) 
    htmlSource = resp.read() 
    return htmlSource 


url = "http://myIP/details/?id=4" 
result_html = download(url) 

它不应该超时......甚至10秒超时..当我尝试从我自己的域下载某些东西时,我怎么会超时?

+1

确认您可以在浏览器中进行连接。尝试从命令提示符下执行“telnet myIP 80”,然后发出'GET/details?id = 4 HTTP/1.1'。怎么了? – jathanism 2010-04-03 01:14:08

+0

'http:// myIP/details /'上有什么服务?如果你使用浏览器去那里,你会看到什么?这个代码中的django在哪里...? – 2010-04-03 01:15:41

回答

1

如果您正在运行开发服务器,这将失败,因为它是单线程的,并且它正在忙于服务原始请求。如果你想让它工作,请使用mod_wsgi或搭配CherryPy

+0

谢谢,这是正确的。 – TIMEX 2010-04-03 01:21:59

0

当你说“你自己的域名”,你从一个NAT防火墙内部打呢?

这样的事情?

123.1.2.3(公共MYIP)< - NAT网关 - > 192.168.1.5(服务器的私有IP)< - > 192.168.1.10(你)

很多防火墙不允许一个内部地址无需重写DNS即可访问外部接口。 DNS重写会导致防火墙拦截您的DNS查找并使用私有IP重写生成的公共IP。

相关问题