【发布时间】:2012-07-26 07:09:18
【问题描述】:
我正在使用urllib2.urlopen(),但我的进程被阻止了
我知道urllib2.urlopen() 有默认超时。
如何让通话不可阻塞?
回溯是
(gdb) bt
#0 0x0000003c6200dc35 in recv () from /lib64/libpthread.so.0
#1 0x00002b88add08137 in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#2 0x00002b88add0830e in ?? () from /usr/lib64/python2.6/lib-dynload/_socketmodule.so
#3 0x000000310b2d8e19 in PyEval_EvalFrameEx () from /usr/lib64/libpython2.6.so.1.0
【问题讨论】:
-
您需要发布实际阻塞的代码。 urlopen 阻塞,直到它收到响应或引发超时错误。如果没有看到您的代码,没有人可以知道为什么它没有引发超时错误。
-
您看到了哪些错误消息?你能发布引发错误的代码吗?
-
您的客户端连接到什么?它是 HTTP 网络服务器吗?它是否会产生响应(urlopen 会挂起直到它得到某些东西)?如果您连接另一个 http 客户端会发生什么,例如卷曲?