Using django testing framework, some unit tests were written that generate a basic default map which draws from postgis.
The db connection stays open (due to connection pooling?). While this is good behavior in production, the testing framework creates a test db, runs tests then destroys the test db as the final step. Because mapnik still has an idle postgres connection, the test script throws an exception:
psycopg2.OperationalError: database "test_simple1" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
It would be nice to have a way to control this connection behavior via the mapnik API.
[springmeyer] see #433 where I experimenting with the connection being closed when the datasource object is deleted rather than when mapnik exits (and releases the Connection Manager). I think the latter behavior is likely ideal, but perhaps we could add keyword arg to the postgis layer to control this....
[springmeyer] Keyword arg added to patch at #433 which maintains current behavior but allows the desired control.
When you set:
persist_connection = false
in the params of one of the postgres layers loaded via xml, then call
and the connection should be closed.
[perrygeo] Setting persist_connection to false appears to work - regardless of using "del map" or not.
[springmeyer] great, applied in r1337