I am facing problem in resque process. I have following implementation: /config/resque_schedule.yml add_jobs_to_queue: cron: "15 * * * *" class: FooJob description: "Find results from class Bar and put on queue" /app/jobs/foo_job.rb class FooJob @queue = :normal def self.perform Bar.add_jobs end end app/models/bar.rb class Bar def self.add_jobs students = find :all students.each { |student| student.enqueue(:asap) } end end Here FooJob(queue: normal) is executed using resque scheduler. The performmethod in FooJob calls method add_jobs from class Bar. In this method, results are found, and put one by one on queue asap. So FooJob becomes parent process, and execution of ''student'' becomes child process. So there should be 2 running processes in the system when this executes. When execution overs, both processes should die automatically. My problem is, the parent process doesn''t die though child process has finished execution. ''ps aux | grep resque'' shows following result on my machine: root 7205 0.0 0.7 228012 122920 ? Ss Apr13 0:21 resque-1.13.0: Forked 12933 at 1302843615 Here it states that process 7205 has forked process 12933, but I don''t see process 12933 running in the system(means it has finished execution) What should be problem with parent process doesn''t die? What is solution on this? Thanks in advance. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
What if I explicitly exit process(using Process.exit(0)) in FooJob#perform after line Bar.add_jobs? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Bryan Crossland
2011-Apr-18 13:10 UTC
Re: Re: Problem with resque; parent process doesn''t die
On Mon, Apr 18, 2011 at 12:37 AM, Nilesh <navale.nilesh-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> What if I explicitly exit process(using Process.exit(0)) in FooJob#perform > after line Bar.add_jobs?No as that will kill your child processes as they start. You should take a look at Parents and Children as well as the Signals section of the Resque README. It discusses using a QUIT signal to shut down idle processes. It also talks about checking to see what that process is doing in queue. https://github.com/defunkt/resque B. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.