On MySQL, it's necessary to supply to ``pool_recycle`` parameter on engine creation, else the connection dies after some timeout and the pool is unable to hand out a session.

The result of this is that the first request fails whenever the connection has been dropped.

Attached is a patch that allows supplying these pool-related configuration options directly in the ZCML directive (db:engine).

Index: src/z3c/saconfig/zcml.py
--- src/z3c/saconfig/zcml.py    (revision 101264)
+++ src/z3c/saconfig/zcml.py    (working copy)
@@ -27,13 +27,31 @@
+    pool_size = zope.schema.Integer(
+        title=u"Pool size",
+        description=u"Number of connections to keep open inside the connection 
+        required=False,
+        default=5)
+    pool_recycle = zope.schema.Integer(
+        title=u"Pool recycle",
+        description=u"Recycle connections after the given number of seconds 
have passed.",
+        required=False,
+        default=-1)
+    pool_timeout = zope.schema.Integer(
+        title=u"Pool timeout",
+        description=u"Number of seconds to wait before giving up on getting a 
connection from the pool.",
+        required=False,
+        default=30)
     setup = zope.schema.BytesLine(
         title=u'After engine creation hook',
         description=u'Callback for creating mappers etc. One argument is 
passed, the engine',
 class ISessionDirective(zope.interface.Interface):
     """Registers a database scoped session"""
@@ -62,8 +80,11 @@
-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=5, pool_recycle=-1, pool_timeout=30):
+    factory = utility.EngineFactory(
+        url, echo=echo, pool_size=pool_size,
+        pool_recycle=pool_recycle, pool_timeout=pool_timeout)
Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to