[Zope-dev] Xron fragility

Chris McDonough chrism@digicool.com
Wed, 11 Oct 2000 11:06:25 -0400


> > As a side note, I do not like the fact that Xron requires you to use
special
> > DTML methods.  I suppose this is a requirement in this architecture due
to
> > the fact they need to be autocataloged, but I don't really like that
feature
> > either :-).
>
> I think Xron could work with anything that has "trigger" and "disarm"
> methods, that gets put into the Schedule catalog.

I guess I'm not real real hot on the dependency on a catalog at all.  I'm
having a hard time imagining a situation where you have so many events that
you need to index them -- especially using a ZCatalog.  It just seems like
too many moving parts and overkill for the job.  :-)

> > > Xron has a single dispatcher thread. This thread knows how long to
sleep
> > > for until the next job needs to run.
> >
> > Do you think this is this any more effective than having a producer
thread
> > do a lookup every minute to see what jobs are current, after which it
should
> > put the current jobs in a queue?
>
> What if you want a small job to be done every 30 seconds?

I generally don't... I'm satisfied with cron granularity, although others
might not be.  Do you have this requirement?

> > > It uses Client.py to run a job.
> >
> > Why is this?  This doesn't make any sense to me on its face.  Why not
just
> > call the method from a separate thread?
>
> Which separate thread? Do you create a new ZODB thread? That sounds as
> if it might use quite a few resources.
>
> Is there a Zope API for making ZODB threads call methods on objects, as
> signalled by other threads? I'm guessing the easiest way to do that is
> to use Client.py to make a new http request.

Well... AFAIK, there is no such thing as a ZODB thread... there are a number
of Python threads used by Zope.  We'd just fire off another one to perform a
task as part of the thing that takes an event off the queue.  This might be
naive.  I need to try it.

> I'd really like to see a scheduler as a standard part of Zope.
> I think it would be good to have scheduled methods called from within
> Zope, rather then going through http. I don't know enough about how
> ZPublisher/ZODB works to know where to start this though.

I'll need to try to call get_transaction().commit() from a
manually-constructed Python thread fired off from Zope and see what happens.
I think it'll just work.  I'll find out in a few minutes.  :-)