【发布时间】:2013-04-18 23:11:42
【问题描述】:
我有一个简单的(非线程)脚本,它在套接字上侦听数据,对其进行分析并在内部使用 SIGALRM's 在预定义的计时器内部发送电子邮件。
问题是在recv() 循环期间,SIGALRM 的出现似乎引发了一个
socket.error: [Errno 4] Interrupted system call
并因此终止程序。
我可以用 try/except 块包装recv(),但我想知道在此期间我是否会丢失任何数据,或者缓冲区是否会防止丢失。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
while True:
try:
data = s.recv(2048)
except socket.error, e:
pass
yield data
s.close()
return
【问题讨论】:
标签: python sockets signals alarm