gpt4 book ai didi

python - 在 systemctl 停止服务时正确退出 python 脚本

转载 作者:行者123 更新时间:2023-12-05 07:35:34 26 4
gpt4 key购买 nike

当按下 CTLC+C 时,我的脚本通过 except KeyboardInterrupt 退出,如下所示:

....

try:
thread1.start()
thread2.start()
while True:
time.sleep(1)

except (KeyboardInterrupt, SystemExit, Exception):
print("exiting")
# handle proper threads exit

但是,当脚本作为 systemd 运行并且我调用 systemctl stop myscript.service 时,'exiting' 消息没有记录到 syslogger,所以我知道 except 未执行。 SystemExitException 似乎没有在服务停止时发出。 systemctl 发出了什么,以便我可以在脚本的 try - except 部分捕获它?

此外,我是否需要在调用 systemctl stop 时注意适当的线程退出,或者它会很好地处理我的脚本?

最佳答案

您可以指定 KILL_MODE systemd 配置文件中的选项,指定向进程发送什么信号以退出它。然后您可以修改 python 脚本以使用 signal 捕获指定的信号。模块并相应地执行退出代码。

至于其他的线程,就看它们的关键程度和实例化的方式了。如果它们被实例化为守护进程并且在任何给定时间简单地终止它们没有任何后果,那么您可以让它们死亡。否则,您应该明确编写逻辑代码,以便在收到信号时正确关闭它们。

关于python - 在 systemctl 停止服务时正确退出 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49477887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com