Since MiddleMan is an uninitialized constant in a worker how do you create new workers inside a worker? Thank You, Ben Johnson E: bjohnson at contuitive.com O: 800-341-6826 M: 817-229-4258 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20060731/75a77fa6/attachment-0001.html
Ezra Zygmuntowicz
2006-Aug-01 03:18 UTC
[Backgroundrb-devel] Creating workers from workers?
On Jul 31, 2006, at 8:05 PM, Ben Johnson wrote:> Since MiddleMan is an uninitialized constant in a worker how do you > create new workers inside a worker? > > Thank You, > Ben Johnson > E: bjohnson at contuitive.com > O: 800-341-6826 > M: 817-229-4258Ben- You would have to use the full module path to the MiddleMan class. Like this: ::BackgrounDRb::MiddleMan.new_worker .... -Ezra -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20060731/d27036d9/attachment.html
>On Jul 31, 2006, at 8:05 PM, Ben Johnson wrote: > >> Since MiddleMan is an uninitialized constant in a worker how do you >> create new workers inside a worker? >> >> Thank You, >> Ben Johnson >> E: bjohnson at contuitive.com >> O: 800-341-6826 >> M: 817-229-4258 > > >Ben- > > You would have to use the full module path to the MiddleMan class. >Like this: > >::BackgrounDRb::MiddleMan.new_worker .... > > >-EzraI need to start a couple workers from one main worker, and I''ve been trying to get the above to work, to no avail. What exactly do I need to put in my worker file? I had one other quick question: I see mention of @job_ctrl in the code, but I can''t find where it''s used. Is it no longer needed? Thanks Ezra for a great plugin and all the hard work you do on it. Cheers, Brett
Ezra Zygmuntowicz
2006-Aug-05 20:13 UTC
[Backgroundrb-devel] Creating workers from workers?
On Aug 5, 2006, at 10:35 AM, Brett Walker wrote:>> On Jul 31, 2006, at 8:05 PM, Ben Johnson wrote: >> >>> Since MiddleMan is an uninitialized constant in a worker how do you >>> create new workers inside a worker? >>> >>> Thank You, >>> Ben Johnson >>> E: bjohnson at contuitive.com >>> O: 800-341-6826 >>> M: 817-229-4258 >> >> >> Ben- >> >> You would have to use the full module path to the MiddleMan class. >> Like this: >> >> ::BackgrounDRb::MiddleMan.new_worker .... >> >> >> -Ezra > > I need to start a couple workers from one main worker, and I''ve been > trying to get the above to work, to no avail. What exactly do I need > to put in my worker file? > > I had one other quick question: I see mention of @job_ctrl in the > code, but I can''t find where it''s used. Is it no longer needed? > > Thanks Ezra for a great plugin and all the hard work you do on it. > > Cheers, > BrettHey Brett- Yeah now that I think about it spawning new worker from within a worker won''t work like that. The reason being is that when the drb server gets started up it gets a new instance of the MiddleMan class. Like this: DRb.start_service("druby://#{CONFIG[''host'']}:#{CONFIG[''port'']}", BackgrounDRb::MiddleMan.new(CONFIG[''timer_sleep''] || 60)) This means that in order to reference the new_worker method *in the instance that is running in the drb server* you can''t do that directly. In order to spawn other workers from within a worker I would have to change the MiddleMan class to be a singleton. This way you could grab the one instance of it and call new_worker on that and it would work as expected. But the way it is currently setup, you don''t have a reference to the Main MiddleMan instance from within your workers. I don''t think making the MiddleMan class be a singleton would affect any current code but I will have to test this. If it doesn ''t interfere then I think it makes sense to turn the MiddleMan into a singleton. that way you cold gain access to it from within worker classes. And yeah @job_ctr is a leftover. Thanks for spotting that, I will remove it as it currently doesn''t do anything. Cheers- -Ezra
On 8/6/06, Ezra Zygmuntowicz <ezmobius at gmail.com> wrote:> > On Aug 5, 2006, at 10:35 AM, Brett Walker wrote: > > >> On Jul 31, 2006, at 8:05 PM, Ben Johnson wrote: > >> > >>> Since MiddleMan is an uninitialized constant in a worker how do you > >>> create new workers inside a worker? > >>> > >>> Thank You, > >>> Ben Johnson > >>> E: bjohnson at contuitive.com > >>> O: 800-341-6826 > >>> M: 817-229-4258 > >> > >> > >> Ben- > >> > >> You would have to use the full module path to the MiddleMan class. > >> Like this: > >> > >> ::BackgrounDRb::MiddleMan.new_worker .... > >> > >> > >> -Ezra > > > > I need to start a couple workers from one main worker, and I''ve been > > trying to get the above to work, to no avail. What exactly do I need > > to put in my worker file? > > > > I had one other quick question: I see mention of @job_ctrl in the > > code, but I can''t find where it''s used. Is it no longer needed? > > > > Thanks Ezra for a great plugin and all the hard work you do on it. > > > > Cheers, > > Brett > > > Hey Brett- > > Yeah now that I think about it spawning new worker from within a > worker won''t work like that. The reason being is that when the drb > server gets started up it gets a new instance of the MiddleMan class. > Like this: > > > DRb.start_service("druby://#{CONFIG[''host'']}:#{CONFIG[''port'']}", > BackgrounDRb::MiddleMan.new(CONFIG[''timer_sleep''] || 60)) > > > This means that in order to reference the new_worker method *in the > instance that is running in the drb server* you can''t do that > directly. In order to spawn other workers from within a worker I > would have to change the MiddleMan class to be a singleton. This way > you could grab the one instance of it and call new_worker on that and > it would work as expected. But the way it is currently setup, you > don''t have a reference to the Main MiddleMan instance from within > your workers. > > I don''t think making the MiddleMan class be a singleton would affect > any current code but I will have to test this. If it doesn > ''t interfere then I think it makes sense to turn the MiddleMan into a > singleton. that way you cold gain access to it from within worker > classes. > > And yeah @job_ctr is a leftover. Thanks for spotting that, I will > remove it as it currently doesn''t do anything. > > > Cheers- > -Ezra > >I would love to see the singelton ability make it in. I prefer not to have to start workers from workers (just an extra complication), but I need to be able to do some ongoing performance measurements, and this would allow me to deal with it in one place. Cheers, Brett