Created
March 10, 2012 18:34
-
-
Save aradriel/2012418 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import eventlet.patcher | |
eventlet.patcher.monkey_patch() | |
import eventlet.db_pool | |
import sqlalchemy.orm | |
import sqlalchemy.pool | |
import psycopg2 | |
_ENGINE = None | |
_MAKER = None | |
pgDBurl="postgresql://" | |
def get_session(autocommit=True, expire_on_commit=False): | |
"""Return a SQLAlchemy session.""" | |
global _ENGINE, _MAKER | |
if _MAKER is None or _ENGINE is None: | |
_ENGINE = get_engine() | |
_MAKER = get_maker(_ENGINE, autocommit, expire_on_commit) | |
session = _MAKER() | |
return session | |
def get_maker(engine, autocommit=True, expire_on_commit=False): | |
"""Return a SQLAlchemy sessionmaker using the given engine.""" | |
return sqlalchemy.orm.sessionmaker(bind=engine, | |
autocommit=autocommit, | |
expire_on_commit=expire_on_commit) | |
def get_engine(): | |
"""Return a SQLAlchemy engine.""" | |
poolCreator = eventlet.db_pool.ConnectionPool(psycopg2, host=_host, user=_user, password=_passw, dbname=_db, min_size=1, max_size=10, max_idle=60) | |
return sqlalchemy.create_engine(pgDBurl, pool_recycle=180, pool_size=4, pool_timeout=30, max_overflow=0, creator=poolCreator.create) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment