OK, so I've looked at it.  I like it.  Achipa is right that you'll have 
to protect drivers[] and known_plugins{} (possibly others) during 
load-time.  I think you should just use a lock-type rather than cache.ram().

Cool, while web2py already supports many large databases, this will 
certainly clean up the code and make implementing more dbs easier.  It 
will need a large amount of testing though.

-tim

billf wrote:
> Tim
>
> Thanks for your response. I'm still a Python newbie, especially with
> some of the more esoteric stuff.
>
> With the plugin demo I have code in sql.py outside any class that
> appears to only run the once (when sql.py is imported I assume) and,
> as you suggest, it loads details of the available db-plugins.  I will
> try wrapping the code in a function outside a class and see if it runs
> in the same way - on import - or does it need to be named anything in
> particular?
>
> BTW in the case of the db-plugins all the data and functions are
> static or class - you don't have to create an instance of a plugin.  I
> don't know yet whether that is an advantage/disadvantage or
> immaterial.
>
> On the more general point, in the original question I was thinking
> about how I would want to configure an application with regard to
> dynamically loading modules, plugins, configuration options, etc.  If,
> for example, I had a "Configurator" class, where would I import it?
>
> If I understand things correctly:
>
> - it couldn't be in a controller file as there may be an interaction
> with the model in db.py and it may not have been imported by the time
> db.py is run (is that correct?)
>
> - it could be in db.py but that seems conceptually wrong as it may
> have no db element at all
>
> - any other ideas?
>
> Coming from Java, it takes a bit of effort to get to grips with the
> elasticity of Python :-)
>
> On Jan 27, 2:14 pm, Timothy Farrell <tfarr...@swgen.com> wrote:
>   
>> I'm not sure what you're getting at here, but if you consider Python is
>> a very dynamic language.  Whenever a module is imported, it is
>> essentially run in it's own namespace.  In the case of your plugin
>> (driver) system (which I haven't looked at yet), you could have an
>> SQLDBFactory function that runs at import-time, loading the available
>> db-engine plugins, and producing a functional SQLDB class.
>>
>> Reimporting a module does not re-run the module unless you call
>> reload(modname).  If you have code that you want to run once, put it in
>> a module that is normally imported (such as sql.db)
>>
>> This is the area where Javascript has made me a better Python
>> programmer.  =)
>>
>> -tim
>>
>> billf wrote:
>>     
>>> Basically, is there any code that receives control when an application
>>> first starts that allows some initialisation/configuration that
>>> doesn't have to run after every request?
>>>       
>>> I believe code could be put in db.py but that is not ideal
>>> conceptually - and would run on every request?
>>>       
>>> I can see that there are pros and cons to the idea of "on start" code
>>> and would be interested in peoples' views.
>>>       
>> --
>> Timothy Farrell <tfarr...@swgen.com>
>> Computer Guy
>> Statewide General Insurance Agency (www.swgen.com)
>>     
> >
>   

-- 
Timothy Farrell <tfarr...@swgen.com>
Computer Guy
Statewide General Insurance Agency (www.swgen.com)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to