如果需要太长时间才能完成,则使用超时值函数。

如果需要太长时间才能完成,则使用超时值函数。

我有一个shell脚本,它循环遍历一个包含URL:s的文本文件,我想访问它并截取截图。

这一切都是简单而简单的。脚本初始化一个类,在运行时创建列表中每个站点的屏幕快照。有些站点需要很长时间才能加载,有些可能根本没有加载。因此,我希望将屏幕抓取函数包装在超时脚本中,使函数返回。False如果它不能在10秒内完成。

我对可能的最简单的解决方案感到满意,也许设置一个异步计时器,在10秒后返回false,而不管函数内部实际发生了什么?


红糖糍粑
浏览 608回答 3
3回答

泛舟湖上清波郎朗

我用with语句,它允许您这样做:with timeout(seconds=3):     time.sleep(4)这会引起时间错误。代码仍在使用signal因此,只有UNIX:import signalclass timeout:     def __init__(self, seconds=1, error_message='Timeout'):         self.seconds = seconds         self.error_message = error_message    def handle_timeout(self, signum, frame):         raise TimeoutError(self.error_message)     def __enter__(self):         signal.signal(signal.SIGALRM, self.handle_timeout)         signal.alarm(self.seconds)     def __exit__(self, type, value, traceback):         signal.alarm(0)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python