我有一个 python 文件 foo.py。它使用 gspread 下载一些 google 表格数据,对其进行处理,然后重新上传。我的数据集通常需要 15-25 秒。有时,大约 20%,它会无限期地运行,或者至少只要我有耐心等待。
我想按计划运行它,尽可能频繁。但我发现在第一次卡住后,使用 watch 之类的东西不会继续运行它。
想法?
请您参考如下方法:
你需要一个monitor(又名watchdog)父进程,它产生你真正感兴趣的子进程运行,等待几分钟,然后杀死child 如果它还没有终止(那么它可能只是退出并等待下一次重新安排,或者尝试几次再次安排子进程)。
使用您最喜欢的调度机制来调度父级(监视器/看门狗)进程,一切就绪。
这是一个很好的架构,几乎独立于子(实际目标)和父(监视器)进程所涉及的编程语言。有关监视器父进程的 Python 实现的提示,请参见例如 Using module 'subprocess' with timeout ...
