Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-19 Thread Florian Lindner
Am Dienstag, 19. Dezember 2006 13:03 schrieb Christian Theune:
> Hi,
>
> Florian Lindner wrote:
> > That's something I had mentioned in my posting too. It has advantage that
> > the feeds could decide if they want to be called or not, whereas by
> > the "utility-way" they would always be called.
>
> Considering your hesitation towards the component architecture, here's
> some more input:

I have no hesitations towards the component architecture. If I had I would not 
use Zope3. ;-)

> Nowadays, registering a (persistent) object as a utility expresses
> basically the same functionality. If it wants to be called, you can
> register it as a utility for an interface (and maybe a name), if you
> don't want to, you don't (or you unregister it).
>
> What you automatically get is:
>
> - you don't have to write your own registry code (again),
> - the CA is optimized to do this kind of lookups

Ok, these are two strong points.

>
> The distinction between software and content space was pretty much
> removed now. Even content objects are software, or not?

Ehh, got me...
Ok, I'm convinced, I'll probably do it this way.


Regards,

Florian
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-19 Thread Christian Theune
Hi,

Florian Lindner wrote:
> That's something I had mentioned in my posting too. It has advantage that the 
> feeds could decide if they want to be called or not, whereas by 
> the "utility-way" they would always be called.

Considering your hesitation towards the component architecture, here's
some more input:

Nowadays, registering a (persistent) object as a utility expresses
basically the same functionality. If it wants to be called, you can
register it as a utility for an interface (and maybe a name), if you
don't want to, you don't (or you unregister it).

What you automatically get is:

- you don't have to write your own registry code (again),
- the CA is optimized to do this kind of lookups

The distinction between software and content space was pretty much
removed now. Even content objects are software, or not?

Christian

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development




signature.asc
Description: OpenPGP digital signature
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-19 Thread Florian Lindner
Am Dienstag, 19. Dezember 2006 09:44 schrieb Thierry Florac:
> Le mardi 19 décembre 2006 à 08:17 +0100, Christian Theune a écrit :
> > Hi,
> >
> > Florian Lindner wrote:
> > > Hello,
> > > I have the following situation:
> > >
[...]
>
> Hi,
>
> I had a several problem to handle regular "alerts" which I solved in
> this way :
>  - scheduling in done via the "schedule" package, available from Zope3
> SVN ; I created an "AlertManager" utility which is a subclass of
> scheduler.CronTask (because my alerts are launched at fixed time, but
> you can use other classes)

That's what I already use.

>  - objects which can raise alerts are registered with a specific
> interface IAlert
>  - when the AlertManager is launched, it opens a new connection (via
> ZEO.ClientStorage), search for registered components (via
> zapi.getAllUtilitiesRegisteredFor(IAlert)) and call one of the
> interface's methods which may raise the alert. In my use case an email
> is sent, but it could be any kind of alert that Python can handle.

This is the same approach that Christian suggested. I have answered to his 
posting.

Thanks,

Florian
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-19 Thread Florian Lindner
Am Dienstag, 19. Dezember 2006 08:17 schrieb Christian Theune:
> Hi,
>
> Florian Lindner wrote:
> > Hello,
> > I have the following situation:
> >
> > An object represents an RSS feed. It should be updated like every 20
> > minutes. If there is something new a Jabber message should be send out.
> >
> > Currently I have it implemented with an scheduler loop that emits an
> > refreshRSSFeed event evey 20 minutes. My problem is that a handler for an
> > event must be a static function, but I want a handler function to be
> > called as a member of every instantiated RSS feed object.
> >
> > Another idea I have:
> > Implement an utility where the RSS feeds could register a function that
> > is called every 20 minutes.
> > Another way would be that this utility takes an URL and monitors the URL
> > for changes and only notifies the RSS Feed object in case of a change.
> >
> > How would you do that?
>
> So there's two problems here: scheduling and notifying persistent
> objects about an event.

No, only the notifying problem.

> I don't have a good idea about the scheduling right now, except the hint
> that using a 'zopectl run' script might be worthwhile.  I'm not sure
> what a 'scheduler function is'.

I use the scheduler package from the Zope3 trunk and so far it works for me.

> About notifying persistent objects: There is a method
> 'getAllUtilitiesRegisteredFor(interface)' which might help you. Have a
> look at zope/app/catalog/catalog.py beginning from line 150
> (indexDocSubscriber) how the catalog handles events and dispatches them
> to multiple catalogs. I think this pretty much matches your use case if
> you make each RSS feed a (named) utility.

The RSS feed is a object that users could add and remove to arbitrary 
(sub-folders of there home-dir) folders. I would rather regard it as content 
object and I don't like adding utilities to content space (I have never 
really understood why content- and software-space have been mixed up).
It would be possible, I think even technically superior to the next solution 
but somehome I don't like.

> Of course you could also have a utility that maintains references to all
> RSS feed objects and simply loops over them and calls a method for
> refreshing.

That's something I had mentioned in my posting too. It has advantage that the 
feeds could decide if they want to be called or not, whereas by 
the "utility-way" they would always be called.


Thanks for your input,

Florian
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-19 Thread Thierry Florac
Le mardi 19 décembre 2006 à 08:17 +0100, Christian Theune a écrit :
> Hi,
> 
> Florian Lindner wrote:
> > Hello,
> > I have the following situation:
> > 
> > An object represents an RSS feed. It should be updated like every 20 
> > minutes. 
> > If there is something new a Jabber message should be send out.
> > 
> > Currently I have it implemented with an scheduler loop that emits an 
> > refreshRSSFeed event evey 20 minutes. My problem is that a handler for an 
> > event must be a static function, but I want a handler function to be called 
> > as a member of every instantiated RSS feed object.
> > 
> > Another idea I have:
> > Implement an utility where the RSS feeds could register a function that is 
> > called every 20 minutes.
> > Another way would be that this utility takes an URL and monitors the URL 
> > for 
> > changes and only notifies the RSS Feed object in case of a change.
> >
> > How would you do that?
> 
> So there's two problems here: scheduling and notifying persistent
> objects about an event.
> 
> I don't have a good idea about the scheduling right now, except the hint
> that using a 'zopectl run' script might be worthwhile.  I'm not sure
> what a 'scheduler function is'.
> 
> About notifying persistent objects: There is a method
> 'getAllUtilitiesRegisteredFor(interface)' which might help you. Have a
> look at zope/app/catalog/catalog.py beginning from line 150
> (indexDocSubscriber) how the catalog handles events and dispatches them
> to multiple catalogs. I think this pretty much matches your use case if
> you make each RSS feed a (named) utility.
> 
> Of course you could also have a utility that maintains references to all
> RSS feed objects and simply loops over them and calls a method for
> refreshing.


Hi,

I had a several problem to handle regular "alerts" which I solved in
this way :
 - scheduling in done via the "schedule" package, available from Zope3
SVN ; I created an "AlertManager" utility which is a subclass of
scheduler.CronTask (because my alerts are launched at fixed time, but
you can use other classes)
 - objects which can raise alerts are registered with a specific
interface IAlert
 - when the AlertManager is launched, it opens a new connection (via
ZEO.ClientStorage), search for registered components (via
zapi.getAllUtilitiesRegisteredFor(IAlert)) and call one of the
interface's methods which may raise the alert. In my use case an email
is sent, but it could be any kind of alert that Python can handle.

I'm far to know if this is the best approach, but at least it works
quite efficiently...

  Thierry Florac
-- 
  Chef de projet intranet/internet
  Office National des Forêts - Département Informatique
  2, Avenue de Saint-Mandé
  75570 PARIS Cedex 12
  Mél : [EMAIL PROTECTED]
  Tél. : +33 01.40.19.59.64
  Fax. : +33 01.40.19.59.85

___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


Re: [Zope3-Users] Periodically refresh RSS feeds

2006-12-18 Thread Christian Theune
Hi,

Florian Lindner wrote:
> Hello,
> I have the following situation:
> 
> An object represents an RSS feed. It should be updated like every 20 minutes. 
> If there is something new a Jabber message should be send out.
> 
> Currently I have it implemented with an scheduler loop that emits an 
> refreshRSSFeed event evey 20 minutes. My problem is that a handler for an 
> event must be a static function, but I want a handler function to be called 
> as a member of every instantiated RSS feed object.
> 
> Another idea I have:
> Implement an utility where the RSS feeds could register a function that is 
> called every 20 minutes.
> Another way would be that this utility takes an URL and monitors the URL for 
> changes and only notifies the RSS Feed object in case of a change.
>
> How would you do that?

So there's two problems here: scheduling and notifying persistent
objects about an event.

I don't have a good idea about the scheduling right now, except the hint
that using a 'zopectl run' script might be worthwhile.  I'm not sure
what a 'scheduler function is'.

About notifying persistent objects: There is a method
'getAllUtilitiesRegisteredFor(interface)' which might help you. Have a
look at zope/app/catalog/catalog.py beginning from line 150
(indexDocSubscriber) how the catalog handles events and dispatches them
to multiple catalogs. I think this pretty much matches your use case if
you make each RSS feed a (named) utility.

Of course you could also have a utility that maintains references to all
RSS feed objects and simply loops over them and calls a method for
refreshing.

Christian

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development




signature.asc
Description: OpenPGP digital signature
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users


[Zope3-Users] Periodically refresh RSS feeds

2006-12-18 Thread Florian Lindner
Hello,
I have the following situation:

An object represents an RSS feed. It should be updated like every 20 minutes. 
If there is something new a Jabber message should be send out.

Currently I have it implemented with an scheduler loop that emits an 
refreshRSSFeed event evey 20 minutes. My problem is that a handler for an 
event must be a static function, but I want a handler function to be called 
as a member of every instantiated RSS feed object.

Another idea I have:
Implement an utility where the RSS feeds could register a function that is 
called every 20 minutes.
Another way would be that this utility takes an URL and monitors the URL for 
changes and only notifies the RSS Feed object in case of a change.

How would you do that?

Thanks,

Florian
___
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users