Skip to content

Commit 1816ba3

Browse files
committed
Minor improvements, some additions to the documentation.
1 parent aa06ad4 commit 1816ba3

10 files changed

Lines changed: 134 additions & 48 deletions

File tree

DBUtils/Docs/UsersGuide.de.html

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -357,21 +357,22 @@ <h2><a id="id2" name="id2">PooledDB</a></h2>
357357
erzeugt, oder ein DB-API-2-Datenbankadapter-Modul</p>
358358
</li>
359359
<li><p class="first"><tt class="docutils literal"><span class="pre">mincached</span></tt> : die anfängliche Anzahl inaktiver Verbindungen, die auf
360-
Vorrat gehalten werden sollen (der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> bedeutet, dass
361-
beim Start keine Verbindungen geöffnet werden)</p>
360+
Vorrat gehalten werden sollen (der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> bedeutet, dass beim
361+
Start keine Verbindungen geöffnet werden)</p>
362362
</li>
363363
<li><p class="first"><tt class="docutils literal"><span class="pre">maxcached</span></tt>: Obergrenze für die Anzahl inaktiver Verbindungen, die auf
364-
Vorrat gehalten werden sollen (der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> bedeutet unbegrenzte
365-
Größe des Vorratsspeichers)</p>
364+
Vorrat gehalten werden sollen (der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> oder <tt class="docutils literal"><span class="pre">None</span></tt> bedeutet
365+
unbegrenzte Größe des Vorratsspeichers)</p>
366366
</li>
367367
<li><p class="first"><tt class="docutils literal"><span class="pre">maxshared</span></tt>: Obergrenze für die Anzahl gemeinsam genutzer Verbindungen
368-
(der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> bedeutet, dass alle Verbindungen dediziert sind)</p>
368+
(der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt> oder <tt class="docutils literal"><span class="pre">None</span></tt> bedeutet, dass alle Verbindungen
369+
dediziert sind)</p>
369370
<p>Wenn diese Obergrenze erreicht wird, werden Verbindungen wiederverwendet,
370371
wenn diese als wiederverwendbar angefordert werden.</p>
371372
</li>
372373
<li><p class="first"><tt class="docutils literal"><span class="pre">maxconnections</span></tt>: Obergrenze für die Anzahl an Datenbankverbindungen,
373374
die insgesamt überhaupt erlaubt werden sollen (der Standardwert <tt class="docutils literal"><span class="pre">0</span></tt>
374-
bedeutet unbegrenzte Anzahl von Datenbankverbindungen)</p>
375+
oder <tt class="docutils literal"><span class="pre">None</span></tt> bedeutet unbegrenzte Anzahl von Datenbankverbindungen)</p>
375376
</li>
376377
<li><p class="first"><tt class="docutils literal"><span class="pre">blocking</span></tt>: bestimmt das Verhalten bei Überschreitung dieser Obergrenze</p>
377378
<p>Wenn dies auf <tt class="docutils literal"><span class="pre">True</span></tt> gesetzt wird, dann wird so lange gewartet, bis die
@@ -478,6 +479,17 @@ <h1><a id="anmerkungen" name="anmerkungen">Anmerkungen</a></h1>
478479
ihre eigenen Mechanismen zum Pooling von Datenbankverbindungen eingebaut.
479480
Tatsächlich hat <a class="reference" href="http://www.sqlobject.org/2/">SQLObject 2</a> (<a class="reference" href="http://www.sqlobject.org/sqlapi/">SQL-API</a>) das Pooling in eine separate Schicht
480481
ausgelagert, in der Code von DBUtils verwendet wird.</p>
482+
<p>Wenn Sie eine Lösung verwenden wie den Apache-Webserver mit <a class="reference" href="http://www.modpython.org">mod_python</a>
483+
oder <a class="reference" href="http://code.google.com/p/modwsgi/">mod_wsgi</a>, dann sollten Sie bedenken, dass Ihr Python-Code normalerweise
484+
im Kontext der Kindprozesse des Webservers läuft. Wenn Sie also das
485+
<tt class="docutils literal"><span class="pre">PooledDB</span></tt>-Modul einsetzen, und mehrere dieser Kindprozesse laufen, dann
486+
werden Sie ebensoviele Pools mit Datenbankverbindungen erhalten. Wenn diese
487+
Prozesse viele Threads laufen lassen, dann mag dies eine sinnvoller Ansatz
488+
sein, wenn aber diese Prozesse nicht mehr als einen Worker-Thread starten,
489+
wie im Fall des Multi-Processing Moduls &quot;prefork&quot; für den Apache-Webserver,
490+
dann sollten Sie auf eine Middleware für das Connection-Pooling zurückgreifen,
491+
die Multi-Processing unterstützt, wie zum Beispiel <a class="reference" href="http://pgpool.projects.postgresql.org">pgpool</a> oder <a class="reference" href="http://pgbouncer.projects.postgresql.org">pgbouncer</a>
492+
für die PostgreSQL-Datenbank.</p>
481493
</div>
482494
<div class="section">
483495
<h1><a id="zukunft" name="zukunft">Zukunft</a></h1>
@@ -514,12 +526,14 @@ <h1><a id="links" name="links">Links</a></h1>
514526
<ul class="simple">
515527
<li><a class="reference" href="http://www.webwareforpython.org/DBUtils">DBUtils</a></li>
516528
<li><a class="reference" href="http://www.python.org">Python</a></li>
517-
<li><a class="reference" href="http://www.webwareforpython.org">Webware for Python</a> framework</li>
529+
<li><a class="reference" href="http://www.webwareforpython.org">Webware for Python</a> Framework</li>
518530
<li>Python <a class="reference" href="http://www.python.org/dev/peps/pep-0249/">DB-API 2</a></li>
519-
<li><a class="reference" href="http://www.postgresql.org">PostgreSQL</a> database</li>
520-
<li><a class="reference" href="http://www.pygresql.org">PyGreSQL</a> adapter</li>
521-
<li><a class="reference" href="http://www.sqlobject.org">SQLObject</a> object-relational mapper</li>
522-
<li><a class="reference" href="http://www.sqlalchemy.org">SQLAlchemy</a> object-relational mapper</li>
531+
<li><a class="reference" href="http://www.postgresql.org">PostgreSQL</a> Datenbank</li>
532+
<li><a class="reference" href="http://www.pygresql.org">PyGreSQL</a> Python-Adapter for PostgreSQL</li>
533+
<li><a class="reference" href="http://pgpool.projects.postgresql.org">pgpool</a> Middleware für Connection-Pooling mit PostgreSQL</li>
534+
<li><a class="reference" href="http://pgbouncer.projects.postgresql.org">pgbouncer</a> Middleware für Connection-Pooling mit PostgreSQL</li>
535+
<li><a class="reference" href="http://www.sqlobject.org">SQLObject</a> Objekt-relationaler Mapper</li>
536+
<li><a class="reference" href="http://www.sqlalchemy.org">SQLAlchemy</a> Objekt-relationaler Mapper</li>
523537
</ul>
524538
</div>
525539
<div class="section">
@@ -533,7 +547,8 @@ <h1><a id="autoren" name="autoren">Autoren</a></h1>
533547
<tr class="field"><th class="field-name">Beiträge:</th><td class="field-body">DBUtils benutzt Code, Anmerkungen und Vorschläge von
534548
Ian Bicking, Chuck Esterbrook (Webware for Python), Dan Green (DBTools),
535549
Jay Love, Michael Palmer, Tom Schwaller, Geoffrey Talvola,
536-
Warren Smith (DbConnectionPool) and Ezio Vernacotola.</td>
550+
Warren Smith (DbConnectionPool), Ezio Vernacotola,
551+
Jehiah Czebotar, Matthew Harriger und Gregory Piñero.</td>
537552
</tr>
538553
</tbody>
539554
</table>

DBUtils/Docs/UsersGuide.de.txt

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -319,22 +319,23 @@ Parameter angeben müssen:
319319
erzeugt, oder ein DB-API-2-Datenbankadapter-Modul
320320

321321
* ``mincached`` : die anfängliche Anzahl inaktiver Verbindungen, die auf
322-
Vorrat gehalten werden sollen (der Standardwert ``0`` bedeutet, dass
323-
beim Start keine Verbindungen geöffnet werden)
322+
Vorrat gehalten werden sollen (der Standardwert ``0`` bedeutet, dass beim
323+
Start keine Verbindungen geöffnet werden)
324324

325325
* ``maxcached``: Obergrenze für die Anzahl inaktiver Verbindungen, die auf
326-
Vorrat gehalten werden sollen (der Standardwert ``0`` bedeutet unbegrenzte
327-
Größe des Vorratsspeichers)
326+
Vorrat gehalten werden sollen (der Standardwert ``0`` oder ``None`` bedeutet
327+
unbegrenzte Größe des Vorratsspeichers)
328328

329329
* ``maxshared``: Obergrenze für die Anzahl gemeinsam genutzer Verbindungen
330-
(der Standardwert ``0`` bedeutet, dass alle Verbindungen dediziert sind)
330+
(der Standardwert ``0`` oder ``None`` bedeutet, dass alle Verbindungen
331+
dediziert sind)
331332

332333
Wenn diese Obergrenze erreicht wird, werden Verbindungen wiederverwendet,
333334
wenn diese als wiederverwendbar angefordert werden.
334335

335336
* ``maxconnections``: Obergrenze für die Anzahl an Datenbankverbindungen,
336337
die insgesamt überhaupt erlaubt werden sollen (der Standardwert ``0``
337-
bedeutet unbegrenzte Anzahl von Datenbankverbindungen)
338+
oder ``None`` bedeutet unbegrenzte Anzahl von Datenbankverbindungen)
338339

339340
* ``blocking``: bestimmt das Verhalten bei Überschreitung dieser Obergrenze
340341

@@ -446,6 +447,18 @@ ihre eigenen Mechanismen zum Pooling von Datenbankverbindungen eingebaut.
446447
Tatsächlich hat `SQLObject 2`_ (SQL-API_) das Pooling in eine separate Schicht
447448
ausgelagert, in der Code von DBUtils verwendet wird.
448449

450+
Wenn Sie eine Lösung verwenden wie den Apache-Webserver mit mod_python_
451+
oder mod_wsgi_, dann sollten Sie bedenken, dass Ihr Python-Code normalerweise
452+
im Kontext der Kindprozesse des Webservers läuft. Wenn Sie also das
453+
``PooledDB``-Modul einsetzen, und mehrere dieser Kindprozesse laufen, dann
454+
werden Sie ebensoviele Pools mit Datenbankverbindungen erhalten. Wenn diese
455+
Prozesse viele Threads laufen lassen, dann mag dies eine sinnvoller Ansatz
456+
sein, wenn aber diese Prozesse nicht mehr als einen Worker-Thread starten,
457+
wie im Fall des Multi-Processing Moduls "prefork" für den Apache-Webserver,
458+
dann sollten Sie auf eine Middleware für das Connection-Pooling zurückgreifen,
459+
die Multi-Processing unterstützt, wie zum Beispiel pgpool_ oder pgbouncer_
460+
für die PostgreSQL-Datenbank.
461+
449462

450463
Zukunft
451464
=======
@@ -484,12 +497,14 @@ Einige Links zu verwandter und alternativer Software:
484497

485498
* DBUtils_
486499
* Python_
487-
* `Webware for Python`_ framework
500+
* `Webware for Python`_ Framework
488501
* Python `DB-API 2`_
489-
* PostgreSQL_ database
490-
* PyGreSQL_ adapter
491-
* SQLObject_ object-relational mapper
492-
* SQLAlchemy_ object-relational mapper
502+
* PostgreSQL_ Datenbank
503+
* PyGreSQL_ Python-Adapter for PostgreSQL
504+
* pgpool_ Middleware für Connection-Pooling mit PostgreSQL
505+
* pgbouncer_ Middleware für Connection-Pooling mit PostgreSQL
506+
* SQLObject_ Objekt-relationaler Mapper
507+
* SQLAlchemy_ Objekt-relationaler Mapper
493508

494509
.. _DBUtils: http://www.webwareforpython.org/DBUtils
495510
.. _Python: http://www.python.org
@@ -503,6 +518,11 @@ Einige Links zu verwandter und alternativer Software:
503518
.. _SQLObject 2: http://www.sqlobject.org/2/
504519
.. _SQL-API: http://www.sqlobject.org/sqlapi/
505520
.. _SQLAlchemy: http://www.sqlalchemy.org
521+
.. _Apache: http://httpd.apache.org
522+
.. _mod_python: http://www.modpython.org
523+
.. _mod_wsgi: http://code.google.com/p/modwsgi/
524+
.. _pgpool: http://pgpool.projects.postgresql.org
525+
.. _pgbouncer: http://pgbouncer.projects.postgresql.org
506526

507527

508528
Autoren
@@ -513,7 +533,8 @@ Autoren
513533
:Beiträge: DBUtils benutzt Code, Anmerkungen und Vorschläge von
514534
Ian Bicking, Chuck Esterbrook (Webware for Python), Dan Green (DBTools),
515535
Jay Love, Michael Palmer, Tom Schwaller, Geoffrey Talvola,
516-
Warren Smith (DbConnectionPool) and Ezio Vernacotola.
536+
Warren Smith (DbConnectionPool), Ezio Vernacotola,
537+
Jehiah Czebotar, Matthew Harriger und Gregory Piñero.
517538

518539

519540
Copyright und Lizenz

DBUtils/Docs/UsersGuide.html

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -337,15 +337,15 @@ <h2><a id="id2" name="id2">PooledDB</a></h2>
337337
(the default of <tt class="docutils literal"><span class="pre">0</span></tt> means no connections are made at startup)</p>
338338
</li>
339339
<li><p class="first"><tt class="docutils literal"><span class="pre">maxcached</span></tt>: the maximum number of idle connections in the pool
340-
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> means unlimited pool size)</p>
340+
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> or <tt class="docutils literal"><span class="pre">None</span></tt> means unlimited pool size)</p>
341341
</li>
342342
<li><p class="first"><tt class="docutils literal"><span class="pre">maxshared</span></tt>: maximum number of shared connections allowed
343-
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> means all connections are dedicated)</p>
343+
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> or <tt class="docutils literal"><span class="pre">None</span></tt> means all connections are dedicated)</p>
344344
<p>When this maximum number is reached, connections are shared if they
345345
have been requested as shareable.</p>
346346
</li>
347347
<li><p class="first"><tt class="docutils literal"><span class="pre">maxconnections</span></tt>: maximum number of connections generally allowed
348-
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> means any number of connections)</p>
348+
(the default value of <tt class="docutils literal"><span class="pre">0</span></tt> or <tt class="docutils literal"><span class="pre">None</span></tt> means any number of connections)</p>
349349
</li>
350350
<li><p class="first"><tt class="docutils literal"><span class="pre">blocking</span></tt>: determines behavior when exceeding the maximum</p>
351351
<p>If this is set to true, block and wait until the number of
@@ -442,6 +442,17 @@ <h1><a id="notes" name="notes">Notes</a></h1>
442442
or <a class="reference" href="http://www.sqlalchemy.org">SQLAlchemy</a>, you won't need DBUtils, since they come with their own
443443
connection pools. <a class="reference" href="http://www.sqlobject.org/2/">SQLObject 2</a> (<a class="reference" href="http://www.sqlobject.org/sqlapi/">SQL-API</a>) is actually borrowing some code
444444
from DBUtils to split the pooling out into a separate layer.</p>
445+
<p>Also note that when you are using a solution like the Apache webserver
446+
with <a class="reference" href="http://www.modpython.org">mod_python</a> or <a class="reference" href="http://code.google.com/p/modwsgi/">mod_wsgi</a>, then your Python code will be usually run
447+
in the context of the webserver's child processes. So if you are using
448+
the <tt class="docutils literal"><span class="pre">PooledDB</span></tt> module, and several of these child processes are running,
449+
you will have as much database connection pools. If these processes are
450+
running many threads, this may still be a reasonable approach, but if these
451+
processes don't spawn more than one worker thread, as in the case of Apache's
452+
&quot;prefork&quot; multi-processing module, this approach does not make sense.
453+
If you're running such a configuration, you should resort to a middleware
454+
for connection pooling that supports multi-processing, such as <a class="reference" href="http://pgpool.projects.postgresql.org">pgpool</a>
455+
or <a class="reference" href="http://pgbouncer.projects.postgresql.org/">pgbouncer</a> for the PostgreSQL database.</p>
445456
</div>
446457
<div class="section">
447458
<h1><a id="future" name="future">Future</a></h1>
@@ -480,7 +491,9 @@ <h1><a id="links" name="links">Links</a></h1>
480491
<li><a class="reference" href="http://www.webwareforpython.org">Webware for Python</a> framework</li>
481492
<li>Python <a class="reference" href="http://www.python.org/dev/peps/pep-0249/">DB-API 2</a></li>
482493
<li><a class="reference" href="http://www.postgresql.org">PostgreSQL</a> database</li>
483-
<li><a class="reference" href="http://www.pygresql.org">PyGreSQL</a> adapter</li>
494+
<li><a class="reference" href="http://www.pygresql.org">PyGreSQL</a> Python adapter for PostgreSQL</li>
495+
<li><a class="reference" href="http://pgpool.projects.postgresql.org">pgpool</a> middleware for PostgreSQL connection pooling</li>
496+
<li><a class="reference" href="http://pgbouncer.projects.postgresql.org/">pgbouncer</a> lightweight PostgreSQL connection pooling</li>
484497
<li><a class="reference" href="http://www.sqlobject.org">SQLObject</a> object-relational mapper</li>
485498
<li><a class="reference" href="http://www.sqlalchemy.org">SQLAlchemy</a> object-relational mapper</li>
486499
</ul>
@@ -496,7 +509,8 @@ <h1><a id="credits" name="credits">Credits</a></h1>
496509
<tr class="field"><th class="field-name">Contributions:</th><td class="field-body">DBUtils uses code, input and suggestions made by
497510
Ian Bicking, Chuck Esterbrook (Webware for Python), Dan Green (DBTools),
498511
Jay Love, Michael Palmer, Tom Schwaller, Geoffrey Talvola,
499-
Warren Smith (DbConnectionPool) and Ezio Vernacotola.</td>
512+
Warren Smith (DbConnectionPool), Ezio Vernacotola,
513+
Jehiah Czebotar, Matthew Harriger and Gregory Piñero.</td>
500514
</tr>
501515
</tbody>
502516
</table>

DBUtils/Docs/UsersGuide.txt

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,16 +298,16 @@ following parameters:
298298
(the default of ``0`` means no connections are made at startup)
299299

300300
* ``maxcached``: the maximum number of idle connections in the pool
301-
(the default value of ``0`` means unlimited pool size)
301+
(the default value of ``0`` or ``None`` means unlimited pool size)
302302

303303
* ``maxshared``: maximum number of shared connections allowed
304-
(the default value of ``0`` means all connections are dedicated)
304+
(the default value of ``0`` or ``None`` means all connections are dedicated)
305305

306306
When this maximum number is reached, connections are shared if they
307307
have been requested as shareable.
308308

309309
* ``maxconnections``: maximum number of connections generally allowed
310-
(the default value of ``0`` means any number of connections)
310+
(the default value of ``0`` or ``None`` means any number of connections)
311311

312312
* ``blocking``: determines behavior when exceeding the maximum
313313

@@ -409,6 +409,18 @@ or SQLAlchemy_, you won't need DBUtils, since they come with their own
409409
connection pools. `SQLObject 2`_ (SQL-API_) is actually borrowing some code
410410
from DBUtils to split the pooling out into a separate layer.
411411

412+
Also note that when you are using a solution like the Apache webserver
413+
with mod_python_ or mod_wsgi_, then your Python code will be usually run
414+
in the context of the webserver's child processes. So if you are using
415+
the ``PooledDB`` module, and several of these child processes are running,
416+
you will have as much database connection pools. If these processes are
417+
running many threads, this may still be a reasonable approach, but if these
418+
processes don't spawn more than one worker thread, as in the case of Apache's
419+
"prefork" multi-processing module, this approach does not make sense.
420+
If you're running such a configuration, you should resort to a middleware
421+
for connection pooling that supports multi-processing, such as pgpool_
422+
or pgbouncer_ for the PostgreSQL database.
423+
412424

413425
Future
414426
======
@@ -449,7 +461,9 @@ Some links to related and alternative software:
449461
* `Webware for Python`_ framework
450462
* Python `DB-API 2`_
451463
* PostgreSQL_ database
452-
* PyGreSQL_ adapter
464+
* PyGreSQL_ Python adapter for PostgreSQL
465+
* pgpool_ middleware for PostgreSQL connection pooling
466+
* pgbouncer_ lightweight PostgreSQL connection pooling
453467
* SQLObject_ object-relational mapper
454468
* SQLAlchemy_ object-relational mapper
455469

@@ -465,6 +479,11 @@ Some links to related and alternative software:
465479
.. _SQLObject 2: http://www.sqlobject.org/2/
466480
.. _SQL-API: http://www.sqlobject.org/sqlapi/
467481
.. _SQLAlchemy: http://www.sqlalchemy.org
482+
.. _Apache: http://httpd.apache.org
483+
.. _mod_python: http://www.modpython.org
484+
.. _mod_wsgi: http://code.google.com/p/modwsgi/
485+
.. _pgpool: http://pgpool.projects.postgresql.org
486+
.. _pgbouncer: http://pgbouncer.projects.postgresql.org/
468487

469488

470489
Credits
@@ -475,7 +494,8 @@ Credits
475494
:Contributions: DBUtils uses code, input and suggestions made by
476495
Ian Bicking, Chuck Esterbrook (Webware for Python), Dan Green (DBTools),
477496
Jay Love, Michael Palmer, Tom Schwaller, Geoffrey Talvola,
478-
Warren Smith (DbConnectionPool) and Ezio Vernacotola.
497+
Warren Smith (DbConnectionPool), Ezio Vernacotola,
498+
Jehiah Czebotar, Matthew Harriger and Gregory Piñero.
479499

480500

481501
Copyright and License

0 commit comments

Comments
 (0)