Python循环任务,错误打包输出

有时候,多个任务循环在跑,但不想中间任何一个错误,停止主线程,但又想在主线程运行结束后,采集运行过程中所有的错误信息。

这种刁钻的想法,我自问自答,记录一下操作方法。

        err_list = []
        mail_str = ''
        for uid in self.uid_list:
            try:
                self.write_or_update_info_in_database(uid)
                logger_stream.info(f'uid: {uid} 写入更新成功')
            except Exception as e:
                logger_stream.info(f'uid: {uid} 写入更新失败')
                err_list.append((uid, e))

        # 采集各个请求任务的报错信息
        for uid, e in err_list:
            try:
                raise e
            except:
                exc_type, exc_value, exc_traceback = sys.exc_info()
                info_list = traceback.format_exception(exc_type, exc_value,
                                                       exc_traceback)
                err_info = f'\nuid: {uid} 请求错误, 错误信息如下:\n'
                err_info += ''.join(info_list)
                err_info += '\n' * 3
                mail_str += err_info

  

通过每次调用任务,用except接收错误e

所有任务完成后,通过raise e的方式上浮错误,通过traceback.format_exception的方法获得错误信息字符串的列表,拼接后,就是完成的错误列表内容。

好用方便。

 

posted @ 2022-12-27 13:58  就是想学习  阅读(29)  评论(0编辑  收藏  举报