在Python中使用守护进程的实现

时间:2010-10-22 18:57:54

标签: python daemon

有没有人知道使用python的守护进程的工作记录良好的实现?如果您知道符合这两个要求的项目,请在此处发布链接。

3 个答案:

答案 0 :(得分:4)

我能想到的三个选项 -

  1. 创建一个调用脚本的cron作业。 Cron是GNU / Linux守护程序的通用名称,它根据您设置的计划定期启动脚本。将脚本添加到crontab中或将符号链接放入特殊目录中,守护程序处理在后台启动它的作业。您可以在维基百科阅读更多内容。有各种不同的cron守护进程,但你的GNU / Linux系统应该已经安装了它。
  2. Pythonic方法(例如,一个库),让您的脚本能够守护自己。是的,它需要一个简单的事件循环(你的事件是定时器触发,可能由睡眠功能提供)。这是我推荐的那个&使用 - A simple unix/linux daemon in Python
  3. 使用python multiprocessing模块。尝试分叉进程等的细节隐藏在此实现中。它非常整洁。
  4. 我不推荐2或3'因为你实际上重复cron功能。 Linux系统范例是让多个简单工具交互并解决您的问题。除非您有其他原因要制作守护进程(除了定期触发),否则请选择其他方法。

    此外,如果您将daemonize与循环一起使用并发生崩溃,请确保您拥有可帮助您进行调试的日志。还要设计一种方法,以便脚本再次启动。如果将脚本添加为cron作业,则会在您保留的时间间隔内再次触发。

答案 1 :(得分:4)

如果您只想运行一个守护进程,请考虑Supervisor,一个自己控制和管理守护进程的守护进程。

如果您想查看详细信息,可以查看Supervisor's launch script或对此lazyweb request的一些回复。

答案 2 :(得分:1)

检查此链接是否有双叉守护程序:http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/

代码可读且记录完整。您想看一下W. Richard的书“UNix环境中的高级编程”第13章,了解有关Unix守护进程的详细信息。