|
Svenne Krap
svenne at krap.dk
Thu Aug 19 23:03:16 EDT 2004
Hi.
Firstly, I'm running modpython 3.1.3 on apache2 (2.0.50).
I have been fooling around with ModPython a little, but I am having
trouble to figure out lifetime of objects.
Let's consider this
==== test.py starts ====
from mod_python import apache
import MYSQLdb
_db = None
def getdb():
global _db
if _db is None:
_db = MYSQLdb.connect(....)
def handler(req):
cnx = getdb()
cur = cnx.cursor()
...
return apache.OK
==== test.py ends====
As far as I can figure out from the docs, the following should be true:
1) _db is initialized exactly once for every apache process and lives as
long as the process
2) cnx is copied from _db at every request, but freed after handler returns
3) cur is created at every request, but freed at handler return
When I run a slightly more complex script (with the same idea though), I
keep getting "too many connections" back from mysql at some point.
There is only one python file served and no custom modules are loaded,
so it should not be because I got too many interprenters started up.
This is after 100 connections are made, but since I am the only one
(guaranteed) to access the script, 100 simultanious connections is utopia.
I use an extensive amount of subdomains, but everything is run through
one wild-carded vhost.
I usually have around 20 apache2 processes hanging around, but nothing
else is using mysql.
Can anyone please point out, where my problem is? And perhaps provide a
pointer to a good way to pool ressources, the tutorial in the docs seems
a little meager.
Svenne
|