[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. :-)