[Zope-dev] Re: Event & Timer Service for Zope 2.8

Dylan Jay gmane at dylanjay.com
Sat Jul 23 21:51:53 EDT 2005


Chris McDonough wrote:
> On Fri, 2005-07-22 at 13:11 +0200, Florent Guillaume wrote:
> 
>>Dylan Jay  <gmane at dylanjay.com> wrote:
>>
>>>Tres Seaver wrote:

>>Myself I'm for having ClockServer in the core, if Chris and others agree.
> 
> 
> It's fine with me.  We maybe just need to remove the C extension in
> it... someone (you?) provided a pure python implementation of what it
> does that probably runs just as fast.

There is also TimerService by Nikolay Kim. Does that work in the same 
way? One nice feature of this is that products such as a scheduler 
subscribe to its tick so that many products can benifit from the clock. 
This seems more flexible to me, rather than putting the path to be 
called in the zope.conf.

Another nice feature is a plugin archetecture shown by
http://www.last-bastion.net/portal_zpydoc/Products.ZScheduler.html
Here one kind of clock can be replaced by another so for instance a cron 
job could be used instead of the clockservice. That product also had a 
singlethreaded clock that ensured the next tick didn't occur until the 
last finished. Personally I think that is the schedulers job rather than 
the clocks but I do think allowing an cron override is a good idea.
So perhaps the archetecture could look something like

ClockService (outside zope)
        v
Clock ControlPanel (inside zope... could also be called via cron wget)
    v                     v
Scheduler A          Product X

In other words products subscribe to the clock control panel in order to 
get a regular call back and the clock control panel is driver from 
clockserver or some other outside source.

Or alternatively you could just make the clock control panel a scheduler 
and say that anyone wanting a clock tick has to register a recurring task.


> I wouldn't be apt include the Scheduler product in the core.  I think it
> may be a tad too complicated.

Do you mean the zope cvs scheduler? I think this is the simplest 
implementation I've seen. It is API friendly in that it allows for code 
to add events reasonably easily. Its UI could be improved somewhat. The 
Zscheduler above as a nicer UI that could be borrowed.
I think the cvs scheduler needs to at least have an option of not 
allowing more than one task at a time to run. This could be implemented 
in the callers code but it is a nice service. At the very least the 
current code needs to be fixed as it causes conflicts if its notify is 
called before the last one has finished.

> The Event product is likely superseded by the Zope 3 event system
> included in Five.

Is there really a need for an event system? I can't see where the actual 
event system is even used in the cvs scheduler. Surely a listener/talker 
pattern is easy enough to implement?




More information about the Zope-Dev mailing list