您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中创建守护程序?

如何在Python中创建守护程序?

当前解决方

PEP 3143(标准守护程序进程库)的参考实现现已作为python-daemon提供。

历史答案

Sander Marechal的代码示例优于最初于2004年发布的原始代码示例。我曾经为Pyro提供了一个守护程序,但如果不得不这样做,可能会使用Sander的代码

成为行为良好的守护进程时,有很多事情要注意:

防止核心转储(许多守护程序以root身份运行,并且核心转储可以包含敏感信息)

在chroot监狱中表现正确

根据使用情况适当设置UID,GID,工作目录,umask和其他过程参数

放弃提升suid,sgid特权

关闭所有打开的文件描述符,并根据用例进行排除

正确的行为,如果启动一个已经脱离上下文中,如init,inetd等

为明智的守护程序行为设置信号处理程序,还可以根据用例确定特定的处理程序

重定向标准流stdin,stdout,stderr因为守护进程不再具有控制终端

将PID文件作为合作咨询锁处理,它本身就是蠕虫的完整罐,具有许多相互矛盾但有效的行为方式

在进程终止时允许适当的清理

实际上成为守护进程,而不会导致僵尸

其中一些是标准的,如规范的Unix文献所述(UNIX环境中的Advanced Programming,已故W. Richard Stevens,Addison-Wesley,1992年)。其他(例如流重定向和PID文件处理)是大多数守护程序用户期望的常规行为,但标准化程度较低。

PEP 3143 “标准守护程序进程库”规范涵盖了所有这些内容。该蟒蛇守护参考实现工作在Python 2.7版或更高版本,和Python 3.2或更高版本。

python 2022/1/1 18:17:29 有302人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶