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

Reply via email to