我想守护一个python进程,现在想问一下是否有一个守护进程运行的好习惯,就像父进程一样,并调用另一个可以打开10-30个线程的类。Python守护进程
我打算为一组服务器编写一个监视脚本,并希望每隔5分钟检查一次每台服务器,确认每台服务器正好5分钟检查一次。
我想有这种方式(在某种程度上讲,PS auxf风格输出):
|monitor-daemon.py
\-check-server.py
\-check-server.py
....
谢谢!
我想守护一个python进程,现在想问一下是否有一个守护进程运行的好习惯,就像父进程一样,并调用另一个可以打开10-30个线程的类。Python守护进程
我打算为一组服务器编写一个监视脚本,并希望每隔5分钟检查一次每台服务器,确认每台服务器正好5分钟检查一次。
我想有这种方式(在某种程度上讲,PS auxf风格输出):
|monitor-daemon.py
\-check-server.py
\-check-server.py
....
谢谢!
您可以使用supervisord这一点。您可以配置任务以响应事件。这些事件可以手动创建,也可以通过监视进程自动创建,也可以定期进行。
它是完全可定制的,并用Python编写。
例子:
[program:your_daemon_name]
command=your_daemon_process
# Add extra options here according to the manual...
[eventlistener:your_monitor_name]
command=your_monitor_process
events=PROCESS_STATE_RUNNING # Will be triggered after a program changes from starting to running
# Add extra options here according to the manual...
或者,如果你想要的事件监听响应过程输出使用事件PROCESS_COMMUNICATION_STDOUT
或TICK_60
为每分钟检查。日志可以重定向到文件等,所以你可以随时查看状态。
确实没有太多的创建自己的daemonize
功能:Unix环境下的高级编程源码(第二版)免费提供:http://www.apuebook.com/src.tar.gz - 您正在寻找apue.2e/daemons/init.c
文件。
有一个small helper program可以完成所有创建正确的守护进程的工作,它可以用来包装任意程序;这可能会节省一些麻烦。
谢谢,但这看起来像是一个矫枉过正的(此时) - 如果你有以下任何建议: (对不起,如果重复自己) - 守护进程已启动,检查是否一切正常 - 调用(示例)MyMonitor()。check() - MyMonitor.check()有任务 - 从数据库获取数据(SQLite/MySQL) - 传递数据并为每个数据条目打开线程 - 基于输出进一步的行动在那里(失败的端口 - 发送电子邮件) - 关闭创建主题 对不起,这样n00bish风格,但要检查是否一切就位,在使用额外的模块之前。 – abiko 2010-08-01 22:13:03
我已经添加了一个例子abiko,也许这将有所帮助。请参阅文档以获取示例事件侦听器:http://supervisord.org/events.html#example-event-listener-implementation – Wolph 2010-08-02 15:00:00
是的,supervisord太过复杂且过于复杂。按照备用答案中的建议,最好使用http://pypi.python.org/pypi/python-daemon。 – aculich 2011-12-04 11:12:51