日度归档:2011 年 11 月 22 日

用alarm信号处理阻塞socket的超时

以前在使用阻塞(blocked)socket的connect,send,recv函数的时候,通常都使用settimeout来设置超时。
如下,

#!/usr/bin/env python

import socket
import time

fd = socket.socket()

try:
    print "connect", time.ctime()
    fd.settimeout(5)
    fd.connect(("twitter.com", 22))
except:
    print "timeout", time.ctime()
finally:
    fd.settimeout(0)

继续阅读