Rotaie problema con Delayed_Job e Active Record
-
19-09-2019 - |
Domanda
sto usando Delayed_Job per afferrare i dati di un utente Twitter dalla API, ma non è salvandolo nel modello per qualche ragione! Per favore aiuto! (Codice qui sotto)
class BandJob < Struct.new(:band_id, :band_username) #parameter
def perform
require 'json'
require 'open-uri'
band = Band.find_by_id(band_id)
t = JSON.parse(open("http://twitter.com/users/show/#{band_username}.json").read)
band.screen_name = t['screen_name']
band.profile_background_image = t['profile_background_image_url']
band.url = 'http://' + band_username + '.com'
band.save!
end
end
Per chiarire, io in realtà non ottenere gli eventuali errori, è solo non salvare. Ecco ciò che il mio registro appare come:
* [JOB] acquiring lock on BandJob
[4;36;1mDelayed::Job Update (3.1ms)[0m [0;1mUPDATE "delayed_jobs" SET locked_at = '2009-11-09 18:59:45', locked_by = 'host:dhcp128036151228.central.yale.edu pid:2864' WHERE (id = 10442 and (locked_at is null or locked_at < '2009-11-09 14:59:45') and (run_at <= '2009-11-09 18:59:45')) [0m
[4;35;1mBand Load (1.5ms)[0m [0mSELECT * FROM "bands" WHERE ("bands"."id" = 34) LIMIT 1[0m
[4;36;1mBand Update (0.6ms)[0m [0;1mUPDATE "bands" SET "updated_at" = '2009-11-09 18:59:45', "profile_background_image" = 'http://a3.twimg.com/profile_background_images/38193417/fbtile4.jpg', "url" = 'http://Coldplay.com', "screen_name" = 'coldplay' WHERE "id" = 34[0m
[4;35;1mDelayed::Job Destroy (0.5ms)[0m [0mDELETE FROM "delayed_jobs" WHERE "id" = 10442[0m
* [JOB] BandJob completed after 0.5448
1 jobs processed at 1.8011 j/s, 0 failed ...
Grazie!
Soluzione
Imposta Delayed::Job.destroy_failed_jobs = false
in un inizializzatore, allora date un'occhiata alla tabella delayed_jobs
nel database. Cercare la colonna errori last_error
-. Che avrà l'analisi dello stack in modo da poter diagnosticare il problema
Si può anche essere interessati a delayed_job_admin plug-in, che aggiunge un controller per visualizzare i processi.
Altri suggerimenti
Ho avuto lo stesso problema e rimbalzare sia di posti di lavoro in ritardo e il mio server ha fatto il trucco.
capito.
In realtà è stato un problema con il Console e Delayed_Job non giocare bello insieme. Ho dovuto ridefinire la variabile nella console, ma poi riflettendo i cambiamenti nel modello. Ops.