我使用上下文管理器流式传输数据以在程序退出时关闭连接。我在后台将我的程序作为守护进程运行。
当守护进程被 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 中是如何工作的,我的问题没有意义