我使用上下文管理器来传输数据,以便在程序退出时关闭连接。 我将我的程序作为后台的守护程序运行。
如何使上下文管理器在守护程序被SIGINT或SIGTERM或kill命令发送的任何中断信号所中断时进行处理?
我在Raspberry Pi和Ubuntu上运行Python 3。
我看到了这个: How do I capture SIGINT in Python? 这对我很有帮助,但我不确定如何将其与Python的上下文管理器一起使用?也就是说,假设我已经构建了一个对象作为上下文管理器:
如何使上下文管理器在守护程序被SIGINT或SIGTERM或kill命令发送的任何中断信号所中断时进行处理?
我在Raspberry Pi和Ubuntu上运行Python 3。
我看到了这个: How do I capture SIGINT in Python? 这对我很有帮助,但我不确定如何将其与Python的上下文管理器一起使用?也就是说,假设我已经构建了一个对象作为上下文管理器:
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()
在作为守护进程运行的脚本中,我使用了该对象。有没有一种Pythonic的方法来指定要在 SIGINT
和 SIGTERM
异常上调用__exit__
函数呢?
SIGINT
了吧? - Davis Herringself.close
。 - mkrieger1