hemant
10/21/2008 6:42:00 PM
On Tue, Oct 21, 2008 at 9:33 PM, Marcelo Junior
<marcelo.machado.jr@gmail.com> wrote:
> Before reply Backgroundrb, leaves to explain my situation. I need make a
> feed reader, and obvious, she need refreshing the feeds registreds.
> Everything is running smoothly, and for to make the updater, I used
> Backgroundrb. But, I can not more than one process of Backgroundrb. I'm
> doing the following.
>
> WORKER
>
> class RefreshWorker < BackgrounDRb::MetaWorker
> set_worker_name :refresh_worker
> def create(args =3D nil)
> logger.info "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"
> logger.info "=3D FEEDEEDO REFRESH =3D"
> logger.info "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"
> logger.info "por Marcelo I. Machado Junior"
>
> refresh
> end
>
> def refresh
> blogs =3D Blog.find(:all)
> blogs.each do |blog|
> logger.info "#{Time.now.strftime('%d/%m/%y %H:%M:%S')} -
> #{blog.title}"
> blog.refresh
> end
> logger.info "#{blogs.size} blogs atualizados"
> refresh
> end
>
>
> And the class Blog, I have the following:
>
> def refresh
> begin
> feed =3D FeedParser.new(self.link)
> self.title =3D feed.title
> self.description =3D feed.subtitle.html2text if feed.subtitle
> #b.publication =3D feed.publication || Time.now
>
> #=C9 percorrido cada item do feed e cadastrado no banco
>
> feed.items.each do |item|
> bi =3D BlogItem.create() do |i|
> i.link =3D item.link
> i.title =3D item.title
> i.description =3D item.content.html2text
> i.indexed_content =3D
> Blog.prepare_content(item.content.html2text)
> i.indexed_title =3D Blog.prepare_content(item.title || '')
> #i.publication =3D item.publication || Time.now
> end
> self.blog_items << bi
> end
> self.save
> true
> rescue
> retry
> end
> end
>
> end
>
> But I want more instances, who knows, for a blog.
You have two options:
1. Use MiddleMan.new_worker() to create more than one instance of your
worker. Specifics I leave it to you.
2. Make feed fetching threaded in worker, using inbuilt thread pool.