安装 storm : pip install storm
目标:修改 Storm 源代码以支持自动重连
文件:python安装目录/site-packages/storm/database.py
在411行添加函数(可以不在这一行,只要是给class Connection添加函数就行):
def_check_and_reconnect(self):if notisinstance(self._database,storm.databases.mysql.MySQL):return0try:
self._raw_connection.ping()exceptException,e:try:
self._raw_connection=self._database.raw_connect()exceptException,e:return0
self._state=STATE_CONNECTEDreturn 1
在函数 _ensure_connected(self)中调用上面的函数:
def _ensure_connected(self):
"""Ensure that we are connected to the database.
If the connection is marked as dead, or if we can't reconnect,
then raise DisconnectionError.
"""
if self._blocked:
raise ConnectionBlockedError("Access to connection is blocked")
self._check_and_reconnect() #添加这一行即可,该函数只有这一处改动
if self._state == STATE_CONNECTED:
return
elif self._state == STATE_DISCONNECTED:
raise DisconnectionError("Already disconnected")
elif self._state == STATE_RECONNECT:
try:
self._raw_connection = self._database.raw_connect()
except DatabaseError, exc:
self._state = STATE_DISCONNECTED
self._raw_connection = None
raise DisconnectionError(str(exc))
else:
self._state = STATE_CONNECTED