[Zope-dev] Re: Event & Timer Service for Zope 2.8
Dylan Jay
gmane at dylanjay.com
Mon Jul 18 22:33:23 EDT 2005
Dylan Jay wrote:
> Chris McDonough wrote:
>
>> On Sat, 2005-01-29 at 05:49, Andrew Veitch wrote:
>>
>>> I noticed there was a thread last month on an event service for
>>> Zope. Did that reach any conclusion?
>>>
>>> From what I can see the present products are:
>>>
>>> - http://www.zope.org/Members/lstaffor/Xron - Zope 2.6 only, not
>>> being developed
>>> - http://zope.org/Members/naumen/NauScheduler - shipped with one of
>>> the Zope CMS's works fine with 2.7
>>> - http://dev.legco.biz/products/ZopeScheduler and
>>> http://dev.legco.biz/products/timerservice - works fine with 2.7 too
>>> - http://cvs.zope.org/Products/Event/ - event service without a time
>>> service, not sure of development status
>>> - http://mail.zope.org/pipermail/zope-cmf/2005-January/021747.html -
>>> Dieter's project to be based on Python's sched module
>>> - http://api.nuxeo.org/CPS3/public/
>>> CPSCore.EventServiceTool.EventServiceTool-class.html - CPS's event
>>> service
>>> - http://cvs.sourceforge.net/viewcvs.py/*checkout*/mailmanager/
>>> mailmanager/MailCheckThread.py?rev=1.15 - our custom scheduler for
>>> MailManager
>>> - Zope X3's event service
>>
>>
>>
>> It has proven (at least for me) to be useful to make the distinction
>> between "event service", "scheduler", and "clock" in the past. I tend
>> to think of each this way:
>>
>> Event Service:
>>
>> Framework software that allows objects to communicate between each other
>> indirectly by sending and receiving "events". An event service's
>> responsibility is only to receive and send messages. Note that it is
>> not within the scope of an event service's responsibility to run tasks
>> at timed or scheduled intervals.
>>
>> Scheduler:
>>
>> Software that ensures tasks may be run at timed or scheduled intervals.
>>
>> Clock:
>>
>> Software that intermittently "pokes" Zope, telling it to wake up and "do
>> something" every so often. A scheduler needs a clock. A clock can be
>> implemented either as an external source (e.g. wget every 10 seconds) or
>> internally (by coopting the asyncore loop).
>>
>> Schedulers usually require clocks, but neither clocks nor schedulers
>> require event services. Similarly, event services require neither a
>> clock nor a scheduler.
>>
>>
>>> It would be great to some consolidation of all of this into the core.
>>> I would also strongly favour a timer service along with the event
>>> service. I know that the argument has always been that operating
>>> systems provide time services but this is not very convenient for
>>> cross platform development and on some Windows platforms it's
>>> difficult.
>>
>>
>>
>> If we use the definitions above, I think what you want is a "scheduler"
>> and a "clock" to be available for Zope, but not necessarily an event
>> service. Don't want to be pedantic about it, but when you use the term
>> "event service" it tends to mean different things to different people.
>>
>> To that end, I'd suggest using the Scheduler product at
>> http://cvs.zope.org/Products/Scheduler. Note that this product *does*
>> currently depend on the "Event" product at
>> http://cvs.zope.org/Products/Event but it's only by accident (the Event
>> product is usable separately). There is an external clock
>> implementation that ships with the Scheduler product.
>>
>> I agree with you that there should be a Zope "internal" clock. I
>> created one not too long ago, but it's a bit invasive. Read
>> http://www.plope.com/Members/chrism/more_scheduling and
>> http://www.plope.com/Members/chrism/scheduling_service for an overview
>> of the strategy I was thinking of when I did it.
>>
>> Personally, I think maybe the internal clock service can also be
>> implemented as a Product and not added to Zope proper. It would be
>> great if someone were to maybe volunteer to take the work that I did
>> towards it and productify it.
>
>
> +1 for using http://cvs.zope.org/Products/Scheduler
> I think the time of a non-core scheduler needs to come to an end. Its
> crazy the number of implementations out there.\
> I'm using the zope cvs version and I've enhanced it to make it
> serialised and non reentrant. I'd like to check that in.
>
> In order to simplify installation I do think a Product version of a
> clock would be required. Perhaps the clock can optional be promoted from
> outside to ensure its thread is still alive?
>
> I'm willing to have a crack at it as long as that effort isn't going to
> yet another non-core scheduler/clock.
Another not listed is a Zope3 scheduler that came from a sprint thats
also back ported to Z2
http://www.last-bastion.net/ZScheduler
Is this what we should be using?
We really really need a core scheduler or at least one product should
win out somehow.
More information about the Zope-Dev
mailing list