miguel
January 14, 2009, 10:48pm
1
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
miguel
January 15, 2009, 11:08am
2
El 14/01/2009, a las 22:47, Miguel M. 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.
miguel
January 16, 2009, 12:23pm
3
El 15/01/2009, a las 23:10, Miguel M. 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
[email protected]
http://cientifico.net
miguel
January 16, 2009, 2:15pm
4
Hola Guillermo,
Atte.
Miguel Michelson Martinez
www.artenlinea.com
2009/1/16 Guillermo Ãlvarez Fernández [email protected]
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
miguel
January 15, 2009, 11:10pm
5
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 [email protected]