[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Sugestion - Background process

Marcelo Junior

10/21/2008 4:03:00 PM

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 = nil)
logger.info "==========================================="
logger.info "= FEEDEEDO REFRESH ="
logger.info "==========================================="
logger.info "por Marcelo I. Machado Junior"

refresh
end

def refresh
blogs = 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 = FeedParser.new(self.link)
self.title = feed.title
self.description = feed.subtitle.html2text if feed.subtitle
#b.publication = feed.publication || Time.now

#Ã? percorrido cada item do feed e cadastrado no banco

feed.items.each do |item|
bi = BlogItem.create() do |i|
i.link = item.link
i.title = item.title
i.description = item.content.html2text
i.indexed_content =
Blog.prepare_content(item.content.html2text)
i.indexed_title = Blog.prepare_content(item.title || '')
#i.publication = 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.
--
Posted via http://www.ruby-....

1 Answer

hemant

10/21/2008 6:42:00 PM

0

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.