apscheduler作业中的os.fork()创建一些已终止的进程

时间:2018-10-23 12:48:35

标签: python apscheduler

我使用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工作者)。如果我删除“做真实的工作”和“杀死孩子”代码,问题仍然会发生。

注意:我这样运行APScheduler:

scheduler = BackgroundScheduler()

这意味着工作人员是进程而不是线程。

我如何摆脱这些已经停工的进程?

0 个答案:

没有答案