【问题标题】:scheduling jobs using python apscheduler使用 python apscheduler 调度作业
【发布时间】:2012-05-14 08:35:31
【问题描述】:

我必须持续监控一个进程,我使用进程 ID 来监控该进程。我编写了一个程序,在进程停止后发送电子邮件,以便我手动重新安排它,但我经常忘记重新安排进程(基本上是另一个 python 程序)。然后我遇到了 apscheduler 模块,并使用 cron 样式调度 (http://packages.python.org/APScheduler/cronschedule.html) 在进程停止后生成进程。现在,一旦进程的 PID 被杀死,我就可以生成该进程,但是当我使用 apscheduler 生成它时,我无法获取新调度进程的进程 ID (PID);因此,我无法监控该过程。 apscheduler 中是否有获取调度进程的进程 ID 的功能?

【问题讨论】:

    标签: python process cron monitoring scheduling


    【解决方案1】:

    与其依靠 APSchedule 来返回 pid,不如让您的程序自己报告 pid。守护进程拥有 pidfiles 是很常见的,它们是位于已知位置的文件,仅包含正在运行的进程的 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 实现,并且将来如果您想编写更多与本地程序交互的程序,这将变得更容易。

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 2019-02-02
      相关资源
      最近更新 更多