【发布时间】:2018-03-19 17:08:14
【问题描述】:
服务器升级后,我遇到了一个 python 脚本占用所有服务器连接的问题,因为它似乎在超时后实际上并没有结束循环。代码如下:
if os.name == 'posix':
signal.signal(signal.SIGALRM, self.handle_timeout)
signal.alarm(__TIMEOUT__)
try:
self.inputline = self.rfile.readline()
except IOError:
continue
if os.name == 'posix':
signal.alarm(0)
信号发生后,所做的只是将terminated 变量设置为1 并打印有关超时的日志。 while 看起来像 while not self.terminated:。我的猜测是,因为它有except IOError:,所以不会出现异常,它仍然位于readline() 上。所以问题是,确保SIGALRM 会导致continue 结束循环并退出脚本的正确方法是什么?
TIA!!
【问题讨论】:
-
请修正您的代码缩进。
-
continue确实 not 结束循环。它继续。您正在寻找break。 -
正确,但循环由警报信号设置的变量控制,因此只有在超时时循环才会结束。
-
剩下的代码在哪里?
标签: python