我在Rails上,我在一个cron工作中使用Koala来导入所有评论Facebook。
每次制作for
并存储request
时,是否可以使用response
循环?或者,在我从Facebook获得for
之前response
重新启动的风险全都搞砸了?
换句话说:循环是等待响应还是我需要回调函数?
这是循环:
def self.import_comments
# Access Facebook API
facebook = Feed.get_facebook_access
# Run 190 queries per cron job
for i in 1..190
id_of_latest_feed = Feed.get_latest['fb_id']
id_of_latest_feed_checked = Option.get_feed_needle
# Check if there are more recent feeds than the latest checked
if id_of_latest_feed != id_of_latest_feed_checked
# Get the facebook id of the feed which comes after the latest checked
latest_feed_checked = Feed.where( fb_id: id_of_latest_feed_checked ).first
this_date = latest_feed_checked['fb_updated_time']
feed_to_check = Feed.get_older_than( this_date )
unless feed_to_check.nil?
# Get the ID of the feed to check
fb_id = feed_to_check['fb_id']
# Update needle
Option.update_feed_needle_to( fb_id )
# -------- REQUEST! --------- #
# Get comments from Facebook
@comments = facebook.get_object("#{ fb_id }/comments?filter=stream")
# Save each comment
@comments.each do |comment|
if Comment.exists?(fb_id: comment['id'])
# don't do anyhting
else
# save the comment
end
end
end
end
end
end
答案 0 :(得分:0)
Koala的get_object
调用是同步的,因此执行将暂停并且不会返回到您的代码,直到结果准备就绪。 (除非它失败,在这种情况下,考拉会引发错误)。
所以是的,这样使用是安全的! for循环不会继续,直到前一个调用的结果准备就绪。不需要回调!
(我基于Koala wiki中的示例)。