使用主管正常结束python程序

问题描述 投票:5回答:1

我正在编写一个将使用主管运行的python程序。该程序基本上执行以下操作:

if __name__ == "__main__":
    while True:
        run()

其中运行功能执行一项简单的任务,即从数据库(mysqlDB)中获取内容并通过电子邮件发送。

我想编写程序以便使用时

supervisorctl stop program

mysql连接应该关闭,并且关闭了正确的日志。

有什么方法可以处理我的python脚本中的stop命令。

python supervisord
1个回答
0
投票

您可以使用信号单元从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()

在这里查看更多干净的示例:

How to process SIGTERM signal gracefully?

© www.soinside.com 2019 - 2024. All rights reserved.