我有一个简单(非线程)的脚本,监听一个套接字以获取数据,分析它并使用内部的
问题是在
SIGALRM
在预定义的时间间隔内发送电子邮件。问题是在
recv()
循环期间,SIGALRM
的发生似乎引发了一个……socket.error: [Errno 4] Interrupted system call
因此终止程序。
我可以将recv()
包装在try/except块中,但我想知道这段时间是否会丢失任何数据,或者缓冲区是否会避免丢失。
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