我有一个python脚本,它将从stdin读取的消息发布到网络中的消息队列中。但是,如果在指定的时间内管道上没有任何消息,我必须发送心跳。
所以我必须区分3个案例:
目前,我的代码如下:
import sys
for i, line in enumerate(sys.stdin):
connection.publish(line)
connection.close()
但是如果有任何超时,我需要中断for look。即sys.stdin一段时间没有提供任何数据。
答案 0 :(得分:1)
import sys
import select
while True:
try:
if select.select([sys.stdin,],[],[],2.0)[0]:
line = sys.stdin.next()
print "Got:", line
else:
print "No data for 2 secs"
except StopIteration:
print 'EOF!'
break
这是我终于提出的