[Zope-dev] Scheduler product, anyone?

Loren Stafford lstafford@icompression.com
Mon, 7 Feb 2000 14:34:35 -0800


I just discovered sched.py. What I want to create is a Zope-ish version.

> >
> > 1. Cron runs a Dispatcher method via RPC.
> >
> > 2. Dispatcher looks in schedule table, finds next scheduled
> method in table,
> > and runs it as a separate transaction (could use RPC), and
> removes the entry
> > from the table.
>
> It may be possible to do this from within Zope and not involve cron
> at all. Your Scheduler product could fire off a seperate thread
> when its package is first loaded. Has the advantages of only attempting
> calls when Zope is running, and being platform independant.

Great idea! However I can't quite get my mind around the implementation in
Zope:

1. Starting the Dispatcher on Zope start-up.
The only place I can think to put this kind of initialization logic is in
__init__.py of the product.
That code would have to look for any already-created instance and (if found)
run it's Dispatcher method in a separate thread. Is there any way to do
this?  I have a feeling I'm confused on this point. I seems odd for
__init__.py to look for instances.

2. Does it make sense to provide for more than one instance of the
scheduler? I can't think of a reason. But then you couldn't prevent someone
from creating as many as they want, could you?

3. Managing separate threads.
Will Zope's persistence and transaction mechanism provide all the mutual
exclusion I need on the schedule queue? ...or do I need some kind of lock?


>
> > 3. Schedule-aware objects can use the Scheduler method to
> schedule one of
> > their methods for execution at a given time.

> Why the requirement for being schedule-aware? I personally would
> want an interface that could be used from arbitrary DTML, external
> methods or python methods using aquisition:

You're right; there is no need for schedule-awareness. It's gone from my
spec.

-- Thanks, everyone, for the helpful ideas,
-- Loren