【问题标题】:Python: Daemon vs. Infinity cyclePython:守护进程与无限循环
【发布时间】:2013-03-10 18:08:28
【问题描述】:

我有一个问题:this 创建 python-daemon 脚本的方法和这个有什么区别:

while(True):
   do_something()
   sleep(10)

【问题讨论】:

标签: python unix daemon


【解决方案1】:

对于一个进程来说,作为一个守护进程不仅仅意味着包含一个无限循环。它不应在其父进程(通常是 shell)终止时终止。它应该支持停止、启动和重新启动的接口(当它的程序文件使用 start|stop|restart 参数执行时)。你提到的例子就是这样做的。

附:我列出的守护进程应该做的事情并不完整,它只是表明存在这样的事情。

【讨论】:

  • 守护程序通常支持一些系统信号来做重启/停止/启动。这些参数通常在 /etc/init.d/ 中的脚本中使用,以将这些信号发送到正确的进程 id (pid)。但是现在,守护进程可能会不那么受欢迎,因为 systemd 已经存在并且它可以很好地正确处理进程,因此不需要像双叉这样的魔术(它使守护进程在后台运行)。
  • @spinus,关于信号是正确的。至于systemd,我还是不熟悉,因为我喜欢的发行版不使用它。无论如何,总有一天双叉将不再需要的好消息。 :-)
  • @Ellioh:有一个临时解决方案。 Systemd 可以作为用户进程工作,因此您只能管理特定用户/类的进程,而不是将其与系统的其余部分集成(但对我来说它还不能正常工作,他们现在正在实施)。有我用来部署东西的 supervisord 程序(对于用户进程来说,它就像糟糕的 systemd 一样) - 所以我将 initd 用于旧的守护进程,而对于我使用 supervisord 的非分叉程序(还有马戏团,但对我来说,supervisord 更适合) .试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多