Unverified Commit 00a21da4 authored by Jin Hai's avatar Jin Hai Committed by GitHub
Browse files

Merge pull request #393 from levylll/20191118_levy_configurable_db

update add configurable DB settings
parents e70c8e02 b3690505
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -11,7 +11,9 @@ grpc_server = Server()

def create_app(testing_config=None):
    config = testing_config if testing_config else settings.DefaultConfig
    db.init_db(uri=config.SQLALCHEMY_DATABASE_URI, echo=config.SQL_ECHO)
    db.init_db(uri=config.SQLALCHEMY_DATABASE_URI, echo=config.SQL_ECHO, pool_size=config.SQL_POOL_SIZE,
               pool_recycle=config.SQL_POOL_RECYCLE, pool_timeout=config.SQL_POOL_TIMEOUT,
               pool_pre_ping=config.SQL_POOL_PRE_PING, max_overflow=config.SQL_MAX_OVERFLOW)

    from mishards.connections import ConnectionMgr
    connect_mgr = ConnectionMgr()
+2 −5
Original line number Diff line number Diff line
@@ -23,15 +23,12 @@ class DB:
        uri and self.init_db(uri, echo)
        self.session_factory = scoped_session(sessionmaker(class_=LocalSession, db=self))

    def init_db(self, uri, echo=False):
    def init_db(self, uri, echo=False, pool_size=100, pool_recycle=5, pool_timeout=30, pool_pre_ping=True, max_overflow=0):
        url = make_url(uri)
        if url.get_backend_name() == 'sqlite':
            self.engine = create_engine(url)
        else:
            self.engine = create_engine(uri, pool_size=100, pool_recycle=5, pool_timeout=30,
                                        pool_pre_ping=True,
                                        echo=echo,
                                        max_overflow=0)
            self.engine = create_engine(uri, pool_size, pool_recycle, pool_timeout, pool_pre_ping, echo, max_overflow)
        self.uri = uri
        self.url = url

+11 −0
Original line number Diff line number Diff line
@@ -50,10 +50,16 @@ class TracingConfig:
        }
    }

    max_overflow=0

class DefaultConfig:
    SQLALCHEMY_DATABASE_URI = env.str('SQLALCHEMY_DATABASE_URI')
    SQL_ECHO = env.bool('SQL_ECHO', False)
    SQL_POOL_SIZE = env.int('pool_size', 100)
    SQL_POOL_RECYCLE = env.int('pool_recycle', 5)
    SQL_POOL_TIMEOUT = env.int('pool_timeout', 30)
    SQL_POOL_PRE_PING = env.bool('pool_pre_ping', True)
    SQL_MAX_OVERFLOW = env.int('max_overflow', 0)
    TRACER_PLUGIN_PATH = env.str('TRACER_PLUGIN_PATH', '')
    TRACER_CLASS_NAME = env.str('TRACER_CLASS_NAME', '')
    ROUTER_PLUGIN_PATH = env.str('ROUTER_PLUGIN_PATH', '')
@@ -65,5 +71,10 @@ class DefaultConfig:
class TestingConfig(DefaultConfig):
    SQLALCHEMY_DATABASE_URI = env.str('SQLALCHEMY_DATABASE_TEST_URI', '')
    SQL_ECHO = env.bool('SQL_TEST_ECHO', False)
    SQL_POOL_SIZE = env.int('pool_size', 100)
    SQL_POOL_RECYCLE = env.int('pool_recycle', 5)
    SQL_POOL_TIMEOUT = env.int('pool_timeout', 30)
    SQL_POOL_PRE_PING = env.bool('pool_pre_ping', True)
    SQL_MAX_OVERFLOW = env.int('max_overflow', 0)
    TRACER_CLASS_NAME = env.str('TRACER_CLASS_TEST_NAME', '')
    ROUTER_CLASS_NAME = env.str('ROUTER_CLASS_TEST_NAME', 'FileBasedHashRingRouter')