gpt4 book ai didi

Python - 在远程脚本中捕获信号和异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:16 25 4
gpt4 key购买 nike

我正在后台运行 AWS (EC2 ubuntu) 上的远程 Python 脚本。该脚本执行一些文件操作,启动长时间运行的模拟(子进程使用 os.system(...) 运行)并写入一些日志文件。我想管理正在运行的脚本的状态,并希望从各种情况下优雅地退出。具体来说:

  1. 子进程被用户用信号 15 中断。
  2. 模拟(子进程)失败(信号 8 - 浮点异常)
  3. 虚拟机已重启
  4. 虚拟机已终止。我使用的是弹性文件系统,所以即使实例被销毁,所有文件都不会。

我知道如何处理基本的异常,但是当我需要从子进程中捕获异常时,我有点迷茫。你能推荐一个可靠的方法吗?

编辑:请注意粗体部分。

最佳答案

对于您给定的场景,请尝试信号处理。在给定的情况下,情况 1(信号 15)和情况 3(vm 正在重新启动)相似(通常信号 15/SIGTERM 是关机序列的一部分,或者可能由具有适当权限的用户触发。尽管如此,它仍能达到所需的目的)。信号 8 - SIGFPE

import signal

def signalHandler(sigNum, frameObject):
if sigNum == 15:
# Code for handling signal 15 goes here
elif sigNum == 8:
# Code for handling signal 8 goes here

signal.signal(signal.SIGTERM, signalHandler) # signal 15
signal.signal(signal.SIGFPE, signalHandler) # signal 8

关于Python - 在远程脚本中捕获信号和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196764/

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