Laurence Rowe wrote:
I would rather we did not hardcode the defaults from SQLAlchemy into the
engine directive (I guess they could change in future). Instead use a
default of None and only supply the parameter if the config option is set.
Sounds right to me. Attached is an update patch.
\malthe
Index: src/z3c/saconfig/zcml.py
===================================================================
--- src/z3c/saconfig/zcml.py (revision 101264)
+++ src/z3c/saconfig/zcml.py (working copy)
@@ -27,13 +27,28 @@
required=False,
default=False)
+ pool_size = zope.schema.Int(
+ title=u"Pool size",
+ description=u"Number of connections to keep open inside the connection
pool.",
+ required=False)
+
+ pool_recycle = zope.schema.Int(
+ title=u"Pool recycle",
+ description=u"Recycle connections after the given number of seconds
have passed.",
+ required=False)
+
+ pool_timeout = zope.schema.Int(
+ title=u"Pool timeout",
+ description=u"Number of seconds to wait before giving up on getting a
connection from the pool.",
+ required=False)
+
setup = zope.schema.BytesLine(
title=u'After engine creation hook',
description=u'Callback for creating mappers etc. One argument is
passed, the engine',
required=False,
default=None)
+
-
class ISessionDirective(zope.interface.Interface):
"""Registers a database scoped session"""
@@ -62,16 +77,27 @@
default="z3c.saconfig.utility.GloballyScopedSession")
-def engine(_context, url, name=u"", echo=False, setup=None, twophase=False):
- factory = utility.EngineFactory(url, echo=echo)
-
+def engine(_context, url, name=u"", echo=False, setup=None, twophase=False,
+ pool_size=None, pool_recycle=None, pool_timeout=None):
+ # to avoid overriding defaults, we only provide pool configuration
+ # parameters if set
+ kwargs = {}
+ if pool_size is not None:
+ kwargs['pool_size'] = pool_size
+ if pool_recycle is not None:
+ kwargs['pool_recycle'] = pool_recycle
+ if pool_timeout is not None:
+ kwargs['pool_timeout'] = pool_timeout
+
+ factory = utility.EngineFactory(url, echo=echo, **kwargs)
+
zope.component.zcml.utility(
_context,
provides=interfaces.IEngineFactory,
component=factory,
permission=zope.component.zcml.PublicPermission,
name=name)
-
+
if setup:
if _context.package is None:
callback = resolve(setup)
_______________________________________________
Zope-Dev maillist - [email protected]
http://mail.zope.org/mailman/listinfo/zope-dev
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )