用于另一种Python处理技术的Python看门狗?

时间:2012-06-06 21:44:54

标签: python monitor watchdog

我有一个无限期运行的实时数据采集器,通过HTTP抓取数据并每隔几秒就将其放入MySQL数据库。

在我的程序中,每当最后生成的时间大于X秒时,我都会有一个True循环产生工作者(下载数据并保存它的函数):

while True:
    if _last_updated - datetime.now() > timedelta(seconds=5):
        green_pool.spawn_n(worker) # yes I'm using Eventlet!
        _last_updated = datetime.now()

确保此模块始终工作,永不冻结,永不停机的最佳方法是什么?我应该检查绿池大小吗?我在考虑用Python编写看门狗,你会建议这样做吗?如果是这样,我应该记住哪些事情?

最佳

1 个答案:

答案 0 :(得分:1)

这可能有点矫枉过正,但我​​会考虑使用supervisord。这是一个控制其他进程的过程(有点像init.d)。它将允许您启动/停止/重新启动包含while True:循环的控制脚本。如果控制脚本停止工作,它也会自动重启控制脚本。

正如您所提到的,您应该在控制脚本中密切关注池大小以及工作人员生成的成功/失败。但是为了确保控制脚本始终在运行,supervisord符合要求。