有时候,多个任务循环在跑,但不想中间任何一个错误,停止主线程,但又想在主线程运行结束后,采集运行过程中所有的错误信息。
这种刁钻的想法,我自问自答,记录一下操作方法。
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的方法获得错误信息字符串的列表,拼接后,就是完成的错误列表内容。
好用方便。
标签:info,输出,uid,err,Python,traceback,list,打包,exc From: https://www.cnblogs.com/sidianok/p/17007946.html