我正在创建一个应用程序,从Twitter的API返回100条推文,然后对所有100条推文进行情绪分析。当用户输入感兴趣的查询并且浏览器向'/get_tweets‘发出请求时,将调用以下方法。
def get_tweets
tweets = $twitter.search(query_params, count: 100).attrs[:statuses]
@tweets = []
datumbox = Datumbox.create('2ef48d67598553804617c9862dfcaf8f')
tweets.each do |t|
tweet = Tweet.new
tweet.twitter_id = t[:id_str]
tweet.text = t[:text]
tweet.user_id = t[:user][:id_str]
tweet.name = t[:user][:name]
tweet.screen_name = t[:user][:screen_name]
tweet.location = t[:user][:location]
tweet.profile_image_url = t[:user][:profile_image_url_https]
tweet.tweet_created_at = t[:created_at]
# Need to remove @ symbols to use datumbox API analysis
sentiment_text = tweet.text.gsub(/@/,'')
tweet.sentiment = datumbox.twitter_sentiment_analysis(text: sentiment_text)
@tweets << tweet
end
render :index
end问题是这是非常慢的。当用户输入他/她感兴趣的查询时,该方法执行101个API调用。
什么是加速这一过程的最佳方法?在构建需要进行“大量”API调用的应用程序时,有没有需要考虑的设计方法?最后,我希望以选项卡格式向用户显示tweet,用户可以在正面、中性和负面tweet之间切换。我是否应该考虑批量调用情感分析API?
非常感谢您的建议!
发布于 2015-05-25 03:31:37
可能的方法:
https://stackoverflow.com/questions/30426382
复制相似问题