在python中从abrubt进程终止中解救数据。

faultguard的Python项目详细描述


faultguard

Build StatusGitHub licensepypi version

在python中从abrubt进程终止中解救数据。

简介

如果一个进程遇到了例如分段错误,它将无法执行进一步的操作来恢复。此外,在分割错误之后,进程的内存被认为是不一致的。一旦一个项目依赖于第三方库,这种错误的出现就失控了。因此,为了实现重要数据的崩溃处理程序,需要一种在进程突然终止后准备挽救数据的方法。此模块使用python模块pickle、multiprocessing和collections来序列化和反序列化各种类型的数据,并提供类似于dictory的数据类型来保存和恢复独立进程的地址空间中的重要数据。

这个模块非常简单,尽管它的功能非常可重用。如果您精通这个主题,那么您将受到鼓励,可以查看源代码并通过(文档丰富的;)pull请求进行贡献。

安装

此模块可以通过PIP获得,也可以通过setup.py手动安装。

光盘机

本模块的重点是依赖本机库并具有重要数据的项目。它不会提供任何帮助您修复分段错误,您应该感到鼓舞,了解Python模块“Fulththand”和使用“GDM”来修复您自己的代码中的错误。如果您设法在fault guard数据字典中生成一个分段错误,从而破坏保护进程,那么解救当然不会起作用。此模块是附加的安全选项,不是不负责任编程的借口!

示例

它遵循此模块的最小工作示例:

importfaultguardimportnumpyasnpdeflaunch(faultguard_data,args):"""    Demo software main method    :param faultguard_data: Faultguard data dictionary    :param args: Data passed from faultguard.start.    """print("Launching demo")# Some important dataimportant_data_1=np.array([1,2,3])important_data_2=args[0]+" "+args[1]# Some dummy important data manipulationforiinrange(10):important_data_1[i%3]=iimportant_data_2+=str(i)print("important_data_1:",important_data_1)print("important_data_2:",important_data_2)# Sending important data to faultguard processfaultguard_data["important_data_1"]=important_data_1faultguard_data["important_data_2"]=important_data_2# Generate segfaultifi==7:importctypesctypes.string_at(0)defrescue(faultguard_data,exit_code,args):"""    Demo rescue handler    :param faultguard_data: Faultguard data dictionary    :param exit_code: Exit code of occured fault.    :param args: Data passed from faultguard.start.    """print("Fault occured. Exit code: {}. Rescued data:".format(exit_code))# Check if fault occurs before data was initializedif"important_data_1"notinfaultguard_dataor"important_data_2"notinfaultguard_data:return# Restore dataimportant_data_1=faultguard_data["important_data_1"]important_data_2=faultguard_data["important_data_2"]# You might need to assign the class here by important_data_1.__class__ = ...print("important_data_1:",important_data_1)print("important_data_2:",important_data_2)defmain():faultguard.start(launch,rescue,args=("Hello","World"))if__name__=="__main__":main()

学分

这个项目最初是为明斯特大学的一个硬件项目开发的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava