处理超时错误(python)

时间:2016-07-25 13:59:23

标签: python

import multiprocessing.pool
import functools
import time
import sys
def timeout(max_timeout):
    def timeout_decorator(item):
        @functools.wraps(item)
        def func_wrapper(*args, **kwargs):
            pool = multiprocessing.pool.ThreadPool(processes=1)
            async_result = pool.apply_async(item, args, kwargs)
            return async_result.get(max_timeout)
        return func_wrapper
    return timeout_decorator

我从SE获得此代码。这会从系统级别引发超时错误。 如何处理此错误并在出现错误时执行其他操作

请注意我是python中的新手。 提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用try / except:

包装错误
try:
    do_something_that_can_raise_error_X()
except X:
    do_something_when_error_X_is_raised()

答案 1 :(得分:0)

您需要将可能引发此异常的代码包装在"尝试"然后除了你期望的例外情况。

from multiprocessing import TimeoutError

try:
    # actions that raise TimeoutError
except TimeoutError:
    # handle TimeoutError
else:
    # (optional) actions for when there is no TimeoutError
finally:
    # (optional) actions to perform in any case

请参阅此example in the multiprocessing docs

请注意,在语法上允许使用除了没有列出精确异常类型的情况,但这不是一个好主意。

另外,您可能想学习如何在python中处理异常,请参阅任何python教程。

相关问题