Forum: Rails-ES ejecutar rake y deamons desde la aplicacion no funciona desde produccion

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2009-01-14 22:48
(Received via mailing list)
Hola expertos,


tengo una aplicación que ejecuta unos rake tasks y un daemon desde una
aplicacion Rails,

estos métodos los ejecuto desde mis controllers:

    call_deamon('explorer_ctl','start')

en desarrollo (osx) me anda bien y pero en producción no se que pasa (y
tengo la misma configuracion aunque es linux Debian etch),
 el navegador se demora demasiado en responder al request, pero de todas
formas ejecuta el método correctamente, incluso puedo ir a otra pagina
sin
terminar el request y el daemon ya esta corriendo , al igual que el rake
task,


tengo estos dos metodos:

 def call_rake(task,options={})
    options[:rails_env] = Rails.env
    args = options.map{|n,v| "#{n.to_s.upcase}='#{v}'"}
    system "/usr/bin/rake #{task} #{args.join(' ')}  --trace >>
#{Rails.root}/log/explorer_rake.log  &"
  end

  def call_deamon(daemon,option)
     system "#{Rails.root}/lib/daemons/#{daemon} #{option}"
  end


gracias






Atte.
Miguel Michelson Martinez
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo Álvarez Fernández (Guest)
on 2009-01-15 11:08
(Received via mailing list)
El 14/01/2009, a las 22:47, Miguel Michelsongs escribió:

> al igual que el rake task,
>


En producción si una petición tarda mucho, se corta para no colapsar
el servidor web.

>  def call_deamon(daemon,option)
>     system "#{Rails.root}/lib/daemons/#{daemon} #{option}"
>  end
>
>
> gracias


Añade fork

Kernel.fork do
tarea larga
end

Así el servidor web crea un nuevo proceso.

Si quires la salida del proceso. Tiene que ser asíncrono. Guardas la
salida del comando en algún sitio y luego lo muestras en la aplicación.
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2009-01-15 23:10
(Received via mailing list)
Hola Guillermo , gracias por responder


mira hice esto,

class ExplorerTasksController < ApplicationController


  def start

    Kernel.fork do
      call_deamon('explorer_ctl','start')
    end

    SpyderStatus.start
    redirect_to pages_path
  end



pero aun asi sigue estando lento, quizas lo implemente mal o no?


Saludos






Atte.
Miguel Michelson Martinez
---------------------------------------
www.artenlinea.com


2009/1/15 Guillermo Álvarez Fernández <guillermo@cientifico.net>
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo Álvarez Fernández (Guest)
on 2009-01-16 12:23
(Received via mailing list)
El 15/01/2009, a las 23:10, Miguel Michelsongs escribió:

>     Kernel.fork do
>       call_deamon('explorer_ctl','start')
>     end
>
>     SpyderStatus.start
>     redirect_to pages_path
>   end
>
>
>
> pero aun asi sigue estando lento, quizas lo implemente mal o no?

¿Que sigue estando lento? ¿Que hacen los daemon? ¿Qué resultado esperas?


Que es eso del SpyderStatus.start ¿Y por que un status tiene un método
status? ¿Qué empiece el status?

Yo no te puedo ayudar con tan poca información, por lo que te sugiero
que tires por los performance test

---
Guillermo Álvarez Fernández
guillermo@cientifico.net
http://cientifico.net
Bf47b813b0de4867a015fd4b54ac2fb4?d=identicon&s=25 Miguel Michelson (samek)
on 2009-01-16 14:15
(Received via mailing list)
Hola Guillermo,



Atte.
Miguel Michelson Martinez
---------------------------------------
www.artenlinea.com


2009/1/16 Guillermo Álvarez Fernández <guillermo@cientifico.net>

>>
>>
>>
>> pero aun asi sigue estando lento, quizas lo implemente mal o no?
>>
>
> ¿Que sigue estando lento? ¿Que hacen los daemon? ¿Qué resultado esperas?


lo que está lento es el request y el redirect de la pagina una vez que
voy a
exporer_task/start, el navegador se queda pegado esperando que cargue el
request . pero el daemon si se inicia , solo que tengo que reiniciar la
pagina y ver que ha funcionado.

el daemon lo que hace es ir a crawlear sitios web y guardar la
informacion
en bases de datos.

lo que espero es que cuando inicie el daemon por la accion del navegador
,
es que se incie y rápidamente me redirija a pages_path, como lo hace en
development

>
>
>
> Que es eso del SpyderStatus.start ¿Y por que un status tiene un método
> status? ¿Qué empiece el status?


el spyderStaus es solo un nuevo registro que cuenta el tioempo desde
cuando
hasta cuando el crawl funciona y el .status es solo un true o false, asi
puedo saber si el crawl esta funcionando o no

>
>
> Yo no te puedo ayudar con tan poca información, por lo que te sugiero que
> tires por los performance test


espero que esta información sirva, solo pensaba que era un problema mas
menos conocido

saludos
This topic is locked and can not be replied to.