diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/engine/base.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/strategies.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/pool.py | 12 |
3 files changed, 16 insertions, 5 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index c07c83a07..90d6bda86 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1962,7 +1962,7 @@ def _listener_connection_cls(cls, dispatch): _savepoint_impl(name=name) def _rollback_to_savepoint_impl(self, name, context): - for fn in dispatch.on_rollback_to_savepoint: + for fn in dispatch.on_rollback_savepoint: fn(self, name, context) return super(EventListenerConnection, self).\ _rollback_to_savepoint_impl(name, context) @@ -1989,13 +1989,13 @@ def _listener_connection_cls(cls, dispatch): for fn in dispatch.on_rollback_twophase: fn(self, xid) return super(EventListenerConnection, self).\ - _rollback_twophase_impl(xid) + _rollback_twophase_impl(xid, is_prepared) def _commit_twophase_impl(self, xid, is_prepared): for fn in dispatch.on_commit_twophase: - fn(self, xid) + fn(self, xid, is_prepared) return super(EventListenerConnection, self).\ - _commit_twophase_impl(xid) + _commit_twophase_impl(xid, is_prepared) return EventListenerConnection diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py index 1ef3ae624..fe0abd4b7 100644 --- a/lib/sqlalchemy/engine/strategies.py +++ b/lib/sqlalchemy/engine/strategies.py @@ -94,6 +94,7 @@ class DefaultEngineStrategy(EngineStrategy): 'echo': 'echo_pool', 'timeout': 'pool_timeout', 'recycle': 'pool_recycle', + 'events':'pool_events', 'use_threadlocal':'pool_threadlocal'} for k in util.get_cls_kwargs(poolclass): tk = translate.get(k, k) diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index e1dc06fe9..280292908 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -67,6 +67,7 @@ class Pool(log.Identified): logging_name=None, reset_on_return=True, listeners=None, + events=None, _dispatch=None): """ Construct a Pool. @@ -104,7 +105,13 @@ class Pool(log.Identified): connections returned to the pool. This is typically a ROLLBACK to release locks and transaction resources. Disable at your own peril. Defaults to True. - + + :param events: a list of 2-tuples, each of the form + ``(callable, target)`` which will be passed to event.listen() + upon construction. Provided here so that event listeners + can be assigned via ``create_engine`` before dialect-level + listeners are applied. + :param listeners: Deprecated. A list of :class:`~sqlalchemy.interfaces.PoolListener`-like objects or dictionaries of callables that receive events when DB-API @@ -127,6 +134,9 @@ class Pool(log.Identified): self.echo = echo if _dispatch: self.dispatch.update(_dispatch, only_propagate=False) + if events: + for fn, target in events: + event.listen(fn, target, self) if listeners: util.warn_deprecated( "The 'listeners' argument to Pool (and " |
