[Web-SIG] Web Site Process Bus

Robert Brewer fumanchu at amor.org
Mon Jun 25 23:17:14 CEST 2007

Phillip J. Eby wrote:
> At 01:51 PM 6/25/2007 -0700, Robert Brewer wrote:
> >Seriously, though, this handles the notification but not the state
> >machine, which I think is critical to the effort. It also 
> doesn't do any
> >error-handling for misbehaving subscribers, so not all 
> subscribers are
> >guaranteed to run if there's an unhandled error in an earlier
> >subscriber.
> Again, it would be really helpful if you could provide some scenarios 
> that show why these things are important.  It's not immediately 
> obvious to me that they are.

I replied with some in another email, it's just being slow.

> For example, if an error occurs, isn't that an indication that the 
> component is broken?  Masking the failure just makes it less likely 
> the component will get fixed in a timely manner.

Yes, the component is broken. However, at runtime, breakage in a
CherryPy component shouldn't keep a Quixote component from, say,
correctly freeing its DB connections. The Bus implementation I posted
logs every failure, and then raises the last one. If we need more
notification than a site log, I think that can be added, either with an
optional argument to bus.log(), or with a custom subscriber to the 'log'

> Meanwhile, if you get a start call, you must be starting, right?  So 
> why worry about the state?  It'd be simpler to just use 
> "before/during/after" messages the way Twisted does.  Your "block" 
> example could be replaced by waiting for the "after" message of the 
> desired state, for example.

That's a possible way to go. My intention was to support both 1)
examination of the state by external components (for operations other
than 'block'--progress meters spring to mind) and 2) restrict some state
transitions if necessary; for example, make bus.start() do nothing (or
block) unless the state is "STOPPED".

Robert Brewer
System Architect
Amor Ministries
fumanchu at amor.org

More information about the Web-SIG mailing list