小编goh*_*ohu的帖子

如何让 python 上下文管理器捕获 SIGINT 或 SIGTERM 信号

我使用上下文管理器流式传输数据以在程序退出时关闭连接。我在后台将我的程序作为守护进程运行。

当守护进程被 SIGINT 或 SIGTERM 或 kill 命令发送的任何中断信号中断时,如何让上下文管理器处理这种情况?

我在 Raspberry Pi 和 Ubuntu 上运行 Python 3。

更新

我已经看到了:如何在 Python 中捕获 SIGINT? 这很有帮助,但我不确定如何将它与 python 的上下文管理器一起使用?IE。假设我有一个作为上下文管理器构建的对象:

class Sensor:

    def __init__(self, name: str):
        self.name = name

    def __enter__(self):
        self._connect()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.close()
Run Code Online (Sandbox Code Playgroud)

我在作为守护程序运行的脚本中使用该对象。是否有一种 pythonic 方法来指定 __ exit__ 函数也必须在 SIGINT 和 SIGTERM 异常上调用?

对不起,如果没有正确理解异常和信号中断在 python 中是如何工作的,我的问题没有意义

python process sigint sigterm

5
推荐指数
1
解决办法
1026
查看次数

标签 统计

process ×1

python ×1

sigint ×1

sigterm ×1