如何在由于库函数而挂起的函数上实现超时? [复制]
Posted
技术标签:
【中文标题】如何在由于库函数而挂起的函数上实现超时? [复制]【英文标题】:How can I implement a timeout on a function that hangs due to a library function? [duplicate] 【发布时间】:2020-04-21 06:38:55 【问题描述】:我正在构建一个程序来验证给定文件树中的媒体和文档文件。当它尝试读取 pdf(使用 PyPDF2)时,它偶尔会冻结程序。我想在函数上实现超时,以便它超时并记录错误而不是崩溃。 这是我的 PDF 函数代码:
def pdf_verify(file, good_files, bad_files):
try:
PyPDF2.PdfFileReader(open(file, "rb"))
good_files.append(file)
except:
bad_files.append(file)
return good_files, bad_files
它尝试使用 PyPDF2 打开 PDF 文件,如果无法打开,它会捕获异常并将文件附加到坏文件列表中。我知道有一种方法可以在 Linux 上执行此操作,但我需要该程序可以在 Windows 上运行。有没有办法做到这一点?谢谢!
【问题讨论】:
【参考方案1】:有多种方法可以处理这个问题:
-
使用线程并监控花在该函数上的时间
使用信号 - 检查limit execution time of a function
等待程序发生异常并使用 except 捕获它
【讨论】:
以上是关于如何在由于库函数而挂起的函数上实现超时? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从挂起的 pgPool.connect() 中获取响应/信息?