2013-03-13 2 views
0

Я создаю приложение, где в какой-то момент мне нужно синхронизировать кучу данных из fb с моей базой данных, поэтому я (attemtping) использую Delayed Job, чтобы вставить это в фоновый режим. Вот как выглядит часть моего класса Delayed Job.Отложенное задание просто не работает

class FbSyncJob < Struct.new(:user_id) 
    require 'RsvpHelper' 

    def perform 
    user = User.find(user_id) 
    FbSyncJob.sync_user(user) 
    end 

    def FbSyncJob.sync_user(user) 
    friends = HTTParty.get(
     "https://graph.facebook.com/me/friends?access_token=#{user.fb['token']}" 
    ) 
    friends_list = friends["data"].map { |friend| friend["id"] } 
    user.fb["friends"] = friends_list 
    user.fb["sync"]["friends"] = Time.now 
    user.save! 
    FbSyncJob.friend_crawl(user) 
    end 
end 

С RsvpHelper класса, живущих в lib/RsvpHelper.rb. Поэтому в какой-то момент в моем приложении я вызываю Delayed::Job.enqueue(FbSyncJob.new(user.id)) с известным действительным пользователем. Работник Я настроил даже говорит мне, что работа была успешно завершена:

1 jobs processed at 37.1777 j/s, 0 failed

Однако при проверке пользователя в базе данных он не имел его список друзей обновляется. Я что-то делаю неправильно или что? Большое спасибо за помощь, которая сводила меня с ума.

ответ

2

Delayed::Job.enqueue поставит рекорд в замедленной таблице заданий, но вам нужно запустить отдельный процесс для выполнения коды задания (выполнения метода)

обычно в развитии это будет bundle exec rake jobs:work (Примечание: необходимо перезапустить это разгребать задачи в любое время вы изменить код, он не изменяется автоматически нагрузка)

Я обычно ставлю следующее в мой задержанном кон фигурации в развитии - это никогда не ставит рекорд в замедленной таблице заданий и запускает весь фоновый код синхронно (в разработке) и по умолчанию рельсами перезагрузит изменения в код

Delayed::Worker.delay_jobs = !(Rails.env.test? || Rails.env.development?)

+1

Это было бы легче читать: 'Задержка :: Worker.delay_jobs = Rails.env.production' – Lane

+1

@Lane - что о постановке окружающей среды? – house9

Смежные вопросы