代码之家  ›  专栏  ›  技术社区  ›  RyanBrady

python中守护进程的工作实现

  •  6
  • RyanBrady  · 技术社区  · 15 年前

    有人知道 工作 另外其文档也很齐全 使用python实现守护进程?如果你知道一个项目符合这两个要求,请在这里发布一个链接。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Srikar Appalaraju Tonetel    15 年前

    我能想到三种选择-

    1. 制作一个调用脚本的cron作业。cron是gnu/linux守护进程的通用名称,它根据您设置的时间表定期启动脚本。您可以将脚本添加到crontab中,或者将其符号链接放置到一个特殊的目录中,守护进程将处理在后台启动脚本的任务。你可以在维基百科上阅读更多。有各种不同的cron守护进程,但是您的GNU/Linux系统应该已经安装了它。
    2. pythonic方法(例如,一个库),使脚本能够自我监控。是的,它需要一个简单的事件循环(您的事件可能是由睡眠函数提供的计时器触发)。这是我推荐和使用的- A simple unix/linux daemon in Python
    3. 使用Python multiprocessing 模块。这个实现中隐藏了尝试分叉进程等的细节。挺干净的。

    我不推荐2或3'因为你实际上是在重复cron功能。Linux系统范例是让多个简单的工具交互并解决您的问题。除非有其他原因(除了定期触发之外)需要创建守护进程,否则请选择其他方法。

    此外,如果将守护进程与循环一起使用,并且发生崩溃,请确保您有日志,这些日志将帮助您进行调试。也要设计一种方法,让剧本重新开始。如果将脚本添加为cron作业,它将在您保留的时间间隔内再次触发。

        2
  •  4
  •   ianmclaury    15 年前

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

    如果你想看看这些沙子,你可以去看看 Supervisor's launch script 或是对此的一些回应 lazyweb request .

        3
  •  1
  •   mrk    14 年前

    检查此链接以获取双分叉守护程序: http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/

    该代码可读性强,且文档化程度高。要了解有关Unix守护进程的详细信息,请参阅W.Richard的《Unix环境中的高级编程》一书的第13章。

    推荐文章