Opens ZODB by URI and provides ZODB-related WSGI apps
A lbrary which allows ZODB databases to be constructed from URI specifications.
Read the latest documentation at http://docs.repoze.org/zodbconn/.
- Worked around broken stdlib urlsplit implementations which jam the fragment for non-standard URIs into the path.
- Add support for Python 3.2 / 3.3.
- Made compatible with ZODB 3.10.3. The only change to non-testing code is in the factory for demo and blob storage, the demo storage now wraps the blob storage instead of the other way around as it was previously.
- Made sure the repoze.zodbconn.connector middleware calls the sub application before returning an iterator.
- Reverted the change from 0.12 to eagerly open the database at startup time. Changed to lazily opening the database but the accessor for the database is now guarded by a lock in order to prevent the race condition being targed by the change from 0.12.
- If a closer is already present in the environment, allow the finder to use it’s im_self as the connection, rather than opening a new connection.
- Extend repoze.zodbconn.connector middleware to support streaming applications. Thanks to Stephane Klein for the patch.
- New URI resolver type: memory://, which creates a ZODB.MappingStorage.MappingStorage storage.
- PersistentApplicationFinder: More eagerly open the database at startup time in order to avoid race condition where many simultaneous requests directly after startup might cause the database to be created more than once.
- Made the URI resolver compatible with changes to Python’s urlparse module in Python 2.6.5 (tests all pass now on Python 2.4.6, 2.5.5, and 2.6.5). Thanks to Fergus Doyle for the patch.
- In the connector middleware, abort the transaction before closing the connection, to avoid an exception that would lead to leaked connections.
- The ZConfig file parser now allows a config file to define multiple databases.
- Added a zconfig URI parser, providing basic support for any kind of storage that ZODB can load via ZConfig.
- Added a db_from_uri function, which is simpler to use than dbfactory_from_uri; db_from_uri also supports multi-databases. Replaced references in the documentation.
- Added connector, a WSGI framework component that connects to ZODB and puts the connection in the WSGI environment. It unconditionally closes the ZODB connection on exit.
- PersistentApplicationFinder now gets the ZODB connection from the WSGI environment whenever it is provided.
- Moved db_from_uri and dbfactory_from_uri to a module named uri, to avoid circular imports.
- Added cachecleanup, a WSGI framework component that keeps only objects of certain classes in the ZODB cache. This helps control memory consumption.
- Added transferlog, a WSGI framework component that logs how many ZODB objects were loaded and stored per request.
- The EnvironmentDeleterMiddleware (the “closer”) middleware did not delete the environment key if the application raised an exception, potentially causing connection leakage for applications that depended upon it doing so.
- Added a LoggingCleanup implementation which can be passed to PersistentApplicationFinder: it logs counts of loaded and saved objects for the connection between the time it is instantiated (i.e., whe the database connection is opened) and the time the connection is closed. See the “Customizing Connection Cleanup” section in the narrative docs for notes on using this feature.
- Added cleanup argument to constructor of PersistentApplicationFinder, to allow applications to register a custom cleanup object factory. See the “Customizing Connection Cleanup” section in the narrative docs for notes on using this feature.
- 100% unit test coverage.
- Fixed breakage with file: URIs having no query string.
Fix a bug in FileStorageURIResolver whereby fully-qualified paths to Windows files (e.g. file://C:\foo\bar\baz?a=1) were parsed incorrectly, resulting in a bogus file location.
Added support for multi-databases in PersistentApplicationFinder. Just pass multiple URIs to the constructor, either as a list of strings or a single string with URIs separated by whitespace. Each database must have a distinct database_name. The first URI specifies the root database.
dbfactory_from_uri now returns only a single argument (the factory).
Docs updated with argument values for file:// and zeo:// URI schemes; this file converted to real REST.
Pass layout to BlobStorage as a kwarg explicitly (for forward compatibility).
Depend on ZODB3 3.8.1+.
Add connection_cache_size, connection_pool_size, and database_name arguments to both FileStorage and ClientStorage URI resolver schemes. connection_cache_size represents the ZODB object cache size (the cache_size parameter to the DB constructor), connection_pool_size represents the ZODB connection pool size (the pool_size parameter to the DB constructor), and database_name represents the ZODB database name (the database_name parameter to the DB constructor). connection_cache_size defaults to 10000 (overriding the too-low DB constructor default of 400), connection_pool_size defaults to 7, and database_name defaults to unnamed.
Add ‘egg:repoze.zodbconn#closer’ middleware.
Add blobstorage and demostorage support to zeo and file resolvers.