我有一个python脚本,它全局调用mySQL的数据库连接对象。有一个插入函数insertToTable(actionDate, action)
,它将记录插入表中。 if __name__=="__main__":
内部脚本的主要部分作为无限while
循环运行数小时/天。
问题是,mysql连接对象可能会在几个小时内未使用,这会导致MySQL服务器超时连接。我目前使用try
&函数内的except
来捕获异常。然而,这导致代码重复,因为我必须包括try&除了阻止在每个函数中处理此错误。
我想知道python中是否有一种机制可以将insertToTable()
挂钩到另一个函数,比如checkConnectivity()
。调用insertToTable()
时,将执行第一个checkConnectivity()
,然后继续执行insertToTable()
。
答案 0 :(得分:1)
您可以创建一个调用checkConnectivity
函数的装饰器。例如:
def checkConnectivity():
print 'Checking connection'
def CheckConnectionDecorator(fn):
def new(*args, **kwargs):
checkConnectivity()
return fn(*args, **kwargs)
return new
@CheckConnectionDecorator
def insertToTable():
print 'Insertion'
@CheckConnectionDecorator
def anotherQueryFunction():
print 'Another query'