我必须连续监视一个进程,并且我使用进程ID来监视该进程。我写了一个程序,在进程停止后发送一封电子邮件,这样我就可以手动重新安排它,但我经常忘记重新安排这个过程(基本上是另一个python程序)。然后,我遇到了apscheduler模块,并使用cron style调度( http://packages.python.org/APScheduler/cronschedule.html)在进程停止后派生该进程。现在,一旦进程的PID被终止,我就能够派生该进程,但是当我使用apscheduler派生它时,我无法获得新调度的进程的进程id (PID);因此,我无法监视该进程。apscheduler中有没有一个函数来获取调度进程的进程ID?
发布于 2012-05-14 16:42:57
与其依靠APSchedule返回pid,不如让您的程序报告pid本身。守护进程通常都有pidfile,这些文件位于某个已知位置,其中只包含正在运行的进程的pid。只需将main函数封装在下面这样的内容中:
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实现,并且将来如果您想要编写更多与程序进行本地交互的程序,也会更容易。
https://stackoverflow.com/questions/10579907
复制相似问题