2011-11-05 12 views
5

Estoy usando el método de trabajo demorado y puedo ejecutar trabajos usando trabajos de rastreo: trabajo pero usando la versión daemonizada, no hace nada aunque lo veo en la lista de procesos.¿El daemon Delayed_job no se ejecuta en desarrollo?

que estoy usando:

  • rieles (3.0.9)
  • delayed_job delayed_job (2.1.4)
  • demonios (1.0.10)

estoy corriendo usando:

unix>RAILS_ENV=development script/delayed_job start 
+0

¿Cuál es el resultado de 'RAILS_ENV = desarrollo de guiones/delayed_job status'? – Ernest

+0

¿Intentó ejecutarlo sin Daemons Gema? – Ernest

+0

Gemfile.lock indica que los daemons son una dependencia obligatoria, pero eliminaré el uso explícito y lo intentaré. La razón por la que lo hice fue tratar de forzar a Daemonize a usar una versión en particular (muchas sugerencias de StackOverflow giraban en torno al uso de 1.0.10 para daemons) ya que tenía daemons 1.1.4 en el sistema. Se agregaron – Aditya

Respuesta

3

Para responder a su pregunta, es posible que necesitemos más en formación.

¿Se agregaron trabajos a la base de datos? ¿Hay algún error en el trabajo?

¿Cuál es el resultado de RAILS_ENV=development script/delayed_job status como ya he mencionado?

En segundo lugar, ¿pasaste por la página Wiki de problemas más comunes?

https://github.com/collectiveidea/delayed_job/wiki/Common-problems

+0

trabajos a la base de datos. No son procesados ​​por el daemon pero son procesados ​​por trabajos de rake: trabajo. Revisaré el mensaje de estado de trabajo retrasado pero veo que se está ejecutando (cuando empiezo dos veces, dice que ya se está ejecutando un proceso) + el pid en el retraso_trabajo.log coincide con el pid del proceso ruby ​​retrasyed_job. – Aditya

+0

El estado devuelve 'delayed_job: running [pid 1473]' – Aditya

3

Podría ser un problema al cargar un archivo de clase de trabajo personalizado. Para probar eso, intente esto:

  • Ingrese a la consola de rieles rails console --sandbox.
  • Asegúrese de tener un trabajo en la tabla job = Delayed::Job.first.
  • Pruebe YAML.load(job.handler). Si obtiene un error que se ve así: ArgumentError: undefined class/module MyCustomClass, probablemente sea un problema al cargar su trabajo personalizado
  • Todavía en la consola de rieles, ejecute require 'My_Custom_Class. A continuación, ejecute el comando YAML.load(job.handler) nuevamente. Si esto devuelve el objeto apropiado, definitivamente es un problema de carga de clases.

Para solucionar el problema, cree el archivo config/initializers/custom.rb y en él ponga require 'My_Custom_Class'.

A continuación, debería ser capaz de ejecutar rake jobs::workoff y conseguir algo que se parece a esto:

[Worker(host:my.host pid:5085)] Starting job worker 
[Worker(host:my.host pid:5085)] MyCustomJob completed after 0.0774 
[Worker(host:my.host pid:5085)] 1 jobs processed at 9.1935 j/s, 0 failed ... 
[Worker(host:my.host pid:5085)] No more jobs available. Exiting 
Cuestiones relacionadas