我假设你正在运行Unix/Linux,但你没有真正说过。我对你的问题没有直接的建议。所以我不期望成为这个问题的“正确”答案。但是这里有一些东西需要探讨。

首先,如果你的守护进程崩溃了,你应该修复它。只有有bug的程序才会崩溃。也许你应该在调试器下启动它们,看看它们在崩溃时会发生什么(如果可能的话)。这些过程中是否有任何跟踪记录?如果不是,请添加它们。这可能有助于诊断您的崩溃。

其次,您的守护进程是否提供服务(打开管道和等待请求)还是定期执行清理?如果他们是定期清理过程,您应该使用cron定期启动它们,而不是让它们以无限循环运行。 Cron进程应该比守护进程更受欢迎。同样,如果他们是开放端口和服务请求的服务,您是否考虑让它们与INETD协同工作?同样,一个守护进程(inetd)应该比一群守护进程更受欢迎。如你所发现的,第三,在一个文件中保存PID并不是很有效。也许像信号量这样的共享IPC会更好。尽管这里我没有任何细节。

第四,有时我需要东西在网站上下文中运行。我使用了一个cron过程,它用维护URL调用wget。您设置了一个特殊的cookie,并使用wget命令行包含cookie信息。如果特殊cookie不存在,则返回403而不是执行维护过程。这里的另一个好处是登录到数据库和其他避免的环境问题,因为服务于普通网页的代码正在服务于维护过程。

希望能给你提供点子。我认为如果可以的话,避开守护进程是最好的开始。如果你可以在mod_wsgi中运行你的python,这样你就不必再支持多个“环境”了。在一次运行几天之后调试失败的进程是非常残酷的。