delayed_job没有正确执行考拉工作

时间:2012-11-18 18:12:22

标签: ruby-on-rails facebook delayed-job koala

我有一个使用考拉的方法,可以通过Facebook获取已注册到我的应用的用户的所有联系人。

如果我“实时”运行,它就可以了。然而,这需要很长时间,所以我推迟了它。

事情是,当使用delayed_job运行它时,它只检索一个联系人,而不是完整列表。

之前有人遇到过这个问题吗?

这是代码

在Sessions#create

  service = Service.from_omniauth(env["omniauth.auth"])
  service.delay.get_contacts if Rails.env.production?

service.rb中的get_contacts函数

def get_contacts(network_size = 10)
  @graph = Koala::Facebook::API.new(token).get_connections("me", "friends")
  saved_contacts = user.friendships.count - 1
  total_contacts = @graph.count
  if total_contacts - saved_contacts > 0
    connections = @graph[saved_contacts..-1]
  else
    connections = nil
  end
  if !connections.nil?
    connections.each do |hash|
      Service.where(:provider => 'facebook', :uid => hash['id']).first_or_initialize.tap do |contact|
      contact.provider = 'facebook'
      contact.uid = hash['id']
      contact.save!
      Relationship.where(:user_id => user, :contact_id => contact).first_or_create
    end
  end
end

0 个答案:

没有答案