***寫了乙個超時處理指令碼,主要用來超時處理nfs服務掛死的情況,如果檢測到掛載超時,就會執行sys.exit(1)報錯退出:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os,os.path,sys,commands,signal,time
class mountexcepition(exception):
def __init__(self,value):
self.value = value
def __str__(self):
return repr(self.value)
#設定命令超時
class timeoutexception(exception):
pass
def settimeout(num, callback):
def wrape(func):
def handle(signum, frame):
raise timeoutexception("執行超時!")
def todo(*args, **kwargs):
try:
signal.signal(signal.sigalrm, handle)
signal.alarm(num)#開啟鬧鐘訊號
rs = func(*args, **kwargs)
signal.alarm(0)#關閉鬧鐘訊號
return rs
except timeoutexception, e:
callback()
return todo
return wrape
if __name__ == '__main__':
def dosome():
sys.exit(1)
@settimeout(8,dosome)
#nfs服務檢查函式
def check_task():
try:
cmd = "ls -l /nfs_5580_check"
(status,output) = commands.getstatusoutput("%s" %cmd)
if status != 0:
raise mountexcepition(output)
except mountexcepition as e:
print "fail"
sys.exit(1)
else:
print "success"
check_task()
python 訊號處理模組signal
signal包負責在python程式內部處理訊號,典型的操作包括預設訊號處理函式,暫停並等待訊號,以及定時發出sigalrm等。要注意,signal包主要是針對unix平台 比如linux,mac os 而windows核心中由於對訊號機制的支援不充分 signal包定義了各個訊號名及其對應的整數,...
Python 訊號處理 signal 模組
官方文件上有這樣的示例 import signal,os 定義乙個訊號處理函式,該函式列印收到的訊號,然後raise ioerror def handler signum,frame print signal handler called with signal signum raise ioerr...
Python訊號處理模組signal
python中對訊號處理的模組主要是使用signal模組,但signal主要是針對unix系統,所以在windows平台上python不能很好的發揮訊號處理的功能。要檢視python中的訊號量,可以使用dir signal 來檢視。在signal模組中,主要是使用signal.signal 函式來預...