我使用APScheduler运行定期作业。为了管理超时,我需要派生当前作业,以便在卡死时将其杀死。 为此,我构建了以下作业函数:
def job_wrapper(*args, **kwargs):
childpid = os.fork()
if childpid == 0:
""" Do the real job in the child here """
# exit child
os._exit(0)
else:
""" kill child if it is stuck here """
# wait child to finish
os.waitpid(childpid,0)
当我运行它时,它会工作一段时间,但最终我得到一个
注意:我这样运行APScheduler:
scheduler = BackgroundScheduler()
这意味着工作人员是进程而不是线程。
我如何摆脱这些已经停工的进程?