我正在编写一个将使用主管运行的python程序。该程序基本上执行以下操作:
if __name__ == "__main__":
while True:
run()
其中运行功能执行一项简单的任务,即从数据库(mysqlDB
)中获取内容并通过电子邮件发送。
我想编写程序以便使用时
supervisorctl stop program
mysql连接应该关闭,并且关闭了正确的日志。
有什么方法可以处理我的python脚本中的stop命令。
您可以使用信号单元从OS接收信号,这是管理员要执行的操作。以下示例代码未经测试。完全没有
import signal
keep_going = True
def my_shutdown_handler(signum, frame):
# set a flag to exit your loop or call what you need to exit gracefully
keep_going = False
if __name__ == "__main__":
signal.signal(signal.SIGTERM, my_shutdown_handler)
while keep_going:
run()
在这里查看更多干净的示例: