使用python ApsScheduler调度作业

使用python ApsScheduler调度作业,python,process,cron,monitoring,scheduling,Python,Process,Cron,Monitoring,Scheduling,我必须连续监视一个流程,并使用流程ID监视该流程。我编写了一个程序,在进程停止后发送电子邮件,以便手动重新安排进程,但我经常忘记重新安排进程(基本上是另一个python程序)。然后,我遇到了apscheduler模块,并使用cron样式的调度()在进程停止后生成一个进程。现在,我可以在进程的PID被终止后生成进程,但是当我使用apscheduler生成它时,我无法获得新调度进程的进程id(PID);因此,我无法监控该过程。ApsScheduler中是否有获取计划进程的进程ID的函数 与其依赖AP

我必须连续监视一个流程,并使用流程ID监视该流程。我编写了一个程序,在进程停止后发送电子邮件,以便手动重新安排进程,但我经常忘记重新安排进程(基本上是另一个python程序)。然后,我遇到了apscheduler模块,并使用cron样式的调度()在进程停止后生成一个进程。现在,我可以在进程的PID被终止后生成进程,但是当我使用apscheduler生成它时,我无法获得新调度进程的进程id(PID);因此,我无法监控该过程。ApsScheduler中是否有获取计划进程的进程ID的函数

与其依赖APSchedule返回pid,不如让程序报告pid本身。守护进程通常有pid文件,这些文件位于已知位置,只包含运行进程的pid。只需将您的主要函数包装为以下内容:

import os

try:
    with open("/tmp/myproc.pid") as pidfile:
        pidfile.write(str(os.getpid()))
    main()
finally:
    os.remove("/tmp/myproc.pid")
现在,无论何时您想要监控您的流程,您都可以首先检查pid文件中是否存在,如果存在,则检索流程的pid以进行进一步监控。这样做的好处是独立于cron的特定实现,并且如果您希望编写更多在本地与该程序交互的程序,那么将来将更加容易