我已经阅读了很多关于监控python脚本的帖子,但是我们还没有找到类似我希望做的事情。基本上,我有两个运行Linux的桌面。每台计算机都有多个python脚本,每周7天,每天24小时不间断运行。其中大多数是网络抓取,而其他一些是擦洗和处理数据。我已经构建了非常广泛的异常处理,在发生任何错误或崩溃的情况下向我发送电子邮件,但在某些情况下我无法通过电子邮件发送电子邮件(例如脚本本身是否会冻结或计算机本身崩溃,或计算机失去互联网连接等。)
所以,我试图构建一种签到服务,其中python脚本在整个运行过程中多次检入服务,如果它没有办理登机手续在X时间内,然后给我发电子邮件。我不知道这是否可以通过信号或asyncore模块和/或套接字来完成,或者甚至是一个好的地方甚至可以开始。
有没有人有任何写这样的经历?或者可以指出我正确的方向?
答案 0 :(得分:2)
查看monit或supervisord等监督工具。
这些工具是为了完成您所描述的而构建的。
例如:为python进程创建一个简单的init.d
脚本:
PID_FILE=/var/run/myscript.pid
LOG_FILE=/mnt/logs/myscript.log
SOURCE=/usr/local/src/myscript
case $1 in
start)
exec /usr/bin/python $SOURCE/main_tread.py >> LOG_FILE 2>&1 &
echo $! > $PID_FILE
;;
stop)
kill `cat ${PID_FILE}`
;;
*)
echo "Usage: wrapper {start|stop}"
;;
esac
exit 0
然后将其添加到monit
配置:
check process myscript pidfile /var/run/myscript.pid
start program = "/etc/init.d/myscript start"
stop program = "/etc/init.d/myscript stop"
check file myscript.pid path /var/run/myscript.pid
if changed checksum then alert
另外,检查文档,它就如何设置警报和发送电子邮件有很好的例子。
答案 1 :(得分:0)
Upstart是一个不错的选择,但我担心它只适用于基于Ubuntu和Redhat的发行版