[Web-SIG] Web Site Process Bus

Ian Bicking ianb at colorstudy.com
Mon Jun 25 23:48:34 CEST 2007


Jim Fulton wrote:
>> All 4 lines of it? ;)
>>
>>     subscribers = []
>>
>>     def notify(event):
>>         for subscriber in subscribers:
>>             subscriber(event)
>>
>> 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. It also sends all events to all subscribers, instead of
>> partitioning the subscribers.
> 
> Right.  You need a dispatching layer behind this.  The beauty of  
> zope.event is that it puts very little requirement on people who  
> publish events.

The problem is that it relies on some specific dispatching layer, and 
that layer would *also* have to be defined to use this for something 
useful like the start/stop events that are motivating this discussion. 
That is, if you dispatch on "isinstance(event, tuple) and event and 
event[0] == 'some_name'", that's very different than "isinstance(event, 
SomeClass)" or "implements(event, ISomething)" or whatever.  Actual 
servers have to emit something more specific than just "an object".


-- 
Ian Bicking | ianb at colorstudy.com | http://blog.ianbicking.org
             | Write code, do good | http://topp.openplans.org/careers


More information about the Web-SIG mailing list