首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在代理后面有超时的urlopen失败。

问在代理后面有超时的urlopen失败。
EN

Stack Overflow用户
提问于 2014-03-20 03:28:56
回答 1查看 474关注 0票数 2

linux下的Python2.7.3:尝试使用超时值参数时的奇怪行为

代码语言:javascript
复制
from urllib2 import urlopen, Request, HTTPError, URLError

url = "http://speedtest.website-solution.net/speedtest/random350x350.jpg"

try:
    #f = urlopen(url, timeout=30)   #never works - always times out
    f = urlopen(url)    #always works fine, returns after < 2 secs
    print("opened")
    f.close()
    print("closed")

except IOError as e:
    print(e)
    pass

编辑:

越挖越深,似乎越低..。以下代码也有相同的问题:

代码语言:javascript
复制
    s = socket.socket()
    s.settimeout(30)
    s.connect(("speedtest.website-solution.net", 80))    #times out
    print("opened socket")
    s.close()

它运行在一个袜子代理后面。使用tsocks python test.py运行。想知道这是否会因为某种原因而破坏套接字超时?不过,timeout=None工作得很好,这似乎很奇怪。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-20 04:28:33

好的..。弄明白了。这确实与代理有关。不知道为什么,但下面的代码似乎修复了它:

来源:https://code.google.com/p/socksipy-branch/

将其放在代码的开头:

代码语言:javascript
复制
import urllib2
from urllib2 import urlopen, Request, HTTPError, URLError
import httplib

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "192.168.56.1", 101)
socks.wrapmodule(urllib2)

现在一切正常..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22522900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档