Forum: Ruby on Rails periodically_call_remote eating up lots of CPU.

Df679bd3d287a21d5ed6020bae384e17?d=identicon&s=25 Diego (Guest)
on 2007-03-17 07:40
(Received via mailing list)
Hi all,

I am having a problem where when I call periodically_call_remote the
CPU usage goes really high and I have to kill the browser to return
the system to normal. I have the following remote call:

<%= periodically_call_remote :url => {:action => '_live_now' },
:update => 'live_now_list',
:frequency => 10 %>

This works fine, at the start. After about 20/30 seconds the CPU
starts rising, to 20%, 50%, 70% and higher.

At first I have the above remote call in a partial (_live_now.rhtml):

<div id="live_now_list">

... stuff...

</div>

<%= periodically_call_remote :url => {:action => '_live_now' },
:update => 'live_now_list',
:frequency => 10 %>

/But/ I did notice that when I moved the periodically_call_remote call
to the index.rhtml which contains the partial _live_now.rhtml, the
problem does not happen. When I moved it to index.rhtml the CPU stays
low and the call works fine every 10 seconds.

It's great that it works but I would like to understand as to why
moving the remote call to index.rhtml fixes the problem?

Any insights would be greatly appreciated.

Cheers,
Diego
588ab1c0a5610a7e160a3b101abb91e6?d=identicon&s=25 MichaelLatta (Guest)
on 2007-03-17 16:33
(Received via mailing list)
If you are using WEBrick in development mode it is probably checking
the partial for updates and reprocessing it, while having it in the
rhtml it is only processed once when the page is loaded.

Michael
Df679bd3d287a21d5ed6020bae384e17?d=identicon&s=25 Diego (Guest)
on 2007-03-18 05:44
(Received via mailing list)
Hi Michael,

Thanks for the reply and explaining why this is happening. Even though
I'd gotten rid of it, it's good to know why it was happening. Is there
a way that this can be done while running webrick in development mode
and not have this happen? Or, if I'm using webrick in development
mode, it's just a matter of putting th remote call outside the partial
and just avoiding this problem?

Thanks.

Diego
A0c079a7c3c9b2cf0bffebd84dc578b0?d=identicon&s=25 Chuck Remes (cremes)
on 2007-03-18 23:44
(Received via mailing list)
You can completely avoid the problem by not putting the
#periodically_call_remote method in a partial that gets reloaded a
lot. As you discovered, each reload creates another instance of the
javascript function.

Put it in the main page outside the partial.

cr
Df679bd3d287a21d5ed6020bae384e17?d=identicon&s=25 Diego (Guest)
on 2007-03-19 02:59
(Received via mailing list)
Thanks CR. Appreciate your input.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.