urllib.urlopen不会在线程上执行

时间:2011-01-22 13:26:04

标签: python multithreading urllib

我正在使用线程,我需要下载一个带有线程的网站。我也有一个线程将请愿书发送到网站但不等待答案。 不等待的是:

class peticion(Thread):
    def __init__(self, url):
        Thread.__init__(self)
        self.url = url

    def run(self):
        f = urllib.urlopen(self.url)
        f.close()

这个工作正常,但是必须等待响应的人需要花费一些时间来完成,从5秒到2分钟,或者它可能永远不会完成。这是班级:

class playerConn(Thread):
    def __init__(self, ev):
        Thread.__init__(self)
        self.ev = ev

    def run(self):
        try:
            params = urllib.urlencode('''params go here''')
            f = urllib.urlopen('''site goes here''')
            resp = f.read()
            f.close()
        finally:
            # do something with the response

无论我是否使用try ... finally语句它都不起作用,urlopen函数之后的代码将无法执行。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

这似乎只是URL的问题,代码很好,似乎没有做错。 我打赌你从网站上遇到某种类型的问题,可能是404或类似问题。 尝试在localhost中打开一些东西,只是为了测试。