[ZODB-Dev] Handling more databases with zeo

Tim Peters tim at zope.com
Tue Jun 28 15:59:58 EDT 2005

[Lukas Linhart]
> sorry for bothering in Dev list, but I've posted this to c.l.p with no
> answer and I don't knew where to ask.
> I've rtfm again and I really don't knew :]
> <cite>
> One nice feature of the configuration file is that you don't need
> to specify imports for a specific storage. That makes the code a little
> shorter and allows you to change storages without changing the code.
> import ZODB.config
> db = ZODB.config.databaseFromURL('/tmp/zeo.conf')
> </cite>
> Well, my goal is to use database via zodb and have db specified in config
> file only.
> Thank You for any help,
> Almad

Well, immediately following the part you quoted is the zeo.conf file you
could use if you wanted to use a ClientStorage connecting to a ZEO server
listening on localhost port 9100:

    server localhost:9100

I'm not sure what else "db specified in the config file only" could mean, or
how the example failed to illustrate how to do that.  It shows how to set up
a config file specifying the storage, and the same application code:

    import ZODB.config
    db = ZODB.config.databaseFromURL('/tmp/zeo.conf')

then works unchanged no matter which storage is specified in /tmp/zeo.conf.

Maybe you could be more specific about what you want to do?

> -------------- Message from comp.lang.python ----------------------
> Hello,
> sorry for bothering with same question again. However, month ago, I have
> tried to handle more zodb databases with zeo as described here:
> http://mail.python.org/pipermail/python-list/2005-May/279915.html
> Since then, I don't have had a time to play with it and now I tried
> again. However, even after reading
> http://www.zope.org/Wikis/ZODB/FrontPage/guide/index.html few times, I
> have no idea how to handle this (as anywhere I read, client only connect
> to port and do not select filestorage).

Yes, a ZEO client needs to connect to the hostname:port pair of the ZEO
server it wants to use.  There is no possibility to specify the name of an
"arbitrary" FileStorage file when opening a ClientStorage.

> Only possibility I see is to run more zeo instances, which is not
> neccessary as I have read.

What have you read?  There _is_ really obscure code that allows for the
possibility of a ZEO server serving more than one database, and in that case
the names are the strings "1", "2", "3", and so on -- there's no choice
about that.  I'm not sure this is documented or tested anywhere, and I'm not
sure this is even officially supported anymore.  One of the comments in a
current ZODB's ZEO code says:

    # @param storage_name a string naming the storage.  This argument
    #        is primarily for backwards compatibility with servers
    #        that supported multiple storages.

That seems to imply that the author believed servers no longer support
multiple storages, but I really don't know.

In any case, yes, starting one ZEO server per database is what I'd do.

More information about the ZODB-Dev mailing list