Ian, Thanks for the response and the reference. I've reviewed the code and it looks like a workable solution. One concerned that I have though, is that it doesn't appear that the class handles threading.
Did you put a lock around the access to the shared dictionary? Or is it not necessary? - Dan On Tuesday, September 10, 2002, at 11:14 AM, Ian Maurer wrote: >> Does anyone have any advice or thoughts, and/or can >> point me to some >> towards some example code? >> > > For my latest projects, I used a 'shared state' class > instead of a classic 'singleton' pattern. It is > described here (called 'BORG' in this write-up by Alex > Martelli): > > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531 > > The trick is to create one instance of it, give it > whatever default attributes you want to use (I have a > configuration file that I change machine to machine or > project to project), and then store a reference to the > object in the APPLICATION object of Webware so that > the reference count remains at 1 (minimum) until your > app server goes down. > > My initialize code looks like this: > > if not self.application().__dict__.get("waldo", 0): > self.application().waldo = > Waldo(self._projectConfiguration) > > Then after that, any new instance of the object will > have the same attributes/values because of the shared > dictionary state. Very similar in concept to the > Singleton, but there are instead multiple instances of > the object working off one set of data. > > Waldo is the name of the class... just an arbitrary > name for the framework I created (my acronym'ing needs > work: Web Application Lazy Data Objects?). > > Waldo started off looking like this > > class Waldo: > __shared_state = { # > shared state: all instances share the same data > 'dbPool': None, > 'formRegistry': None, > 'mutexDir': '', > 'dbHost': '', > 'dbName': '', > 'dbUser': '', > 'dbPass': '', > } > > def __init__(self, configuration=None): # > configure only once during Application's life > > self.__dict__ = self.__shared_state # > BORG class: all class instances share the same data > > if configuration: > self.__dict__.update(configuration) # > update Borg w/ App. specific config data > > I can give your more info of what I did specifically, > if you decide to go this route... but if not, I will > save my breath ;) > > good luck, > Ian Maurer > > > __________________________________________________ > Yahoo! - We Remember > 9-11: A tribute to the more than 3,000 lives lost > http://dir.remember.yahoo.com/tribute > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > Webware-discuss mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/webware-discuss > ------------------------------------------------------- In remembrance www.osdn.com/911/ _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss
