zoukankan      html  css  js  c++  java
  • Python ORM Storm 源码修改

    安装 storm : pip install storm

    目标:修改 Storm 源代码以支持自动重连
    文件:python安装目录/site-packages/storm/database.py

    在411行添加函数(可以不在这一行,只要是给class Connection添加函数就行):

    def _check_and_reconnect(self):
        if not isinstance(self._database,storm.databases.mysql.MySQL):
            return 0
        try:
            self._raw_connection.ping()
        except Exception,e:
            try:
                self._raw_connection = self._database.raw_connect()
            except Exception,e:
                return 0
        self._state = STATE_CONNECTED
        return 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
    
  • 相关阅读:
    Python操作Mongo数据库
    Python正则模块
    Python时间模块
    Python协程(下)
    Python协程(中)
    Python协程(上)
    aiohttp
    常用排序算法的Python实现
    江苏省各地级市58同城租房数据
    百合网
  • 原文地址:https://www.cnblogs.com/olivetree123/p/5000283.html
Copyright © 2011-2022 走看看