We are planning on deploying our Web2Py application under Apache-WSGI on a
cluster of servers all accessing the same multiple databases. Since the new
databases will be created on the fly, as needed, we cannot predict beforehand
how many we will end up using and, consequently, how many files will end up
being created in DATABASES folder. As a result, I am trying to create
sub-folders under DATABASES and set MIGRATE parameter on .define_table() call
for a given database to <sub-folder name>/<table name>.table. Such approach
allows me to better control the overall number of files in a single folder as
well as make the overall picture more manageable. There is one problem with
this approach and one question for the experts:
1. A problem - we are using Auth to authenticate users and so need to perform
auth.define_tables(). By passing to it migrate="<sub-folder name>/", I almost
made it create all the auth_ table files in that sub-folder, except that there
is a typo in TOOLS.PY, line 1420 in my source code for version 1.99.7, where
instead of expected
migrate=self.__get_migrate(settings.table_cas_name, migrate),
it goes
migrate=self.__get_migrate(settings.table_event_name, migrate),
I've fixed it in my copy and would like to request that the fix should be made
in the official release code base as well.
2. A question - should DATABASES folder be shared among the Apache-Web2Py
machines or should each maintain its own copy? More specifically, is there any
locking mechanism on those .table files built specifically for the purpose of
sharing between threads/machines? I intend to use migrate_enabled=False when
creating an instance of DAL if I know that the tables have already been
created, but to make sure that multiple machines won't try to create the new
database/new sub-folder at the same time, I will probably have to build some
locks outside DAL. Is this even the right way of thinking about this problem?
Sorry for the long-winded question. Great framework, BTW. :)
--