Copy db connection pool tweaks from syncstorage.
This commit is contained in:
parent
62526d1625
commit
4b7cab5bd5
@ -12,6 +12,7 @@ XXX TODO: move this into the tokenserver repo.
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
import time
|
import time
|
||||||
|
import urlparse
|
||||||
from mozsvc.exceptions import BackendError
|
from mozsvc.exceptions import BackendError
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, BigInteger, Index
|
from sqlalchemy import Column, Integer, String, BigInteger, Index
|
||||||
@ -101,8 +102,23 @@ class StaticNodeAssignment(object):
|
|||||||
def __init__(self, sqluri, node_url, **kw):
|
def __init__(self, sqluri, node_url, **kw):
|
||||||
self.sqluri = sqluri
|
self.sqluri = sqluri
|
||||||
self.node_url = node_url
|
self.node_url = node_url
|
||||||
self._engine = create_engine(sqluri, poolclass=QueuePool,
|
self.driver = urlparse.urlparse(sqluri).scheme.lower()
|
||||||
pool_size=1, max_overflow=0)
|
sqlkw = {
|
||||||
|
"logging_name": "syncserver",
|
||||||
|
"connect_args": {},
|
||||||
|
"poolclass": QueuePool,
|
||||||
|
"pool_reset_on_return": True,
|
||||||
|
}
|
||||||
|
if self.driver == "sqlite":
|
||||||
|
# We must mark it as safe to share sqlite connections between
|
||||||
|
# threads. The pool will ensure there's on race conditions.
|
||||||
|
sqlkw["connect_args"]["check_same_thread"] = False
|
||||||
|
# If using a :memory: database, we must use a QueuePool of size
|
||||||
|
# 1 so that a single connection is shared by all threads.
|
||||||
|
if urlparse.urlparse(sqluri).path.lower() in ("/", "/:memory:"):
|
||||||
|
sqlkw["pool_size"] = 1
|
||||||
|
sqlkw["max_overflow"] = 0
|
||||||
|
self._engine = create_engine(sqluri, **sqlkw)
|
||||||
users.create(self._engine, checkfirst=True)
|
users.create(self._engine, checkfirst=True)
|
||||||
|
|
||||||
def get_user(self, service, email):
|
def get_user(self, service, email):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user