Ruby on rails 无法使用单独的TwitterStream实例跟踪多个关键字
我正在尝试运行多个客户端并跟踪关键字,每个客户端都有不同的access/oauth令牌(在不同的Twitter帐户上创建)。我正在使用sidekiq启动每个Ruby on rails 无法使用单独的TwitterStream实例跟踪多个关键字,ruby-on-rails,ruby,twitter,sidekiq,Ruby On Rails,Ruby,Twitter,Sidekiq,我正在尝试运行多个客户端并跟踪关键字,每个客户端都有不同的access/oauth令牌(在不同的Twitter帐户上创建)。我正在使用sidekiq启动每个TweetStream::Client实例 我希望如此,因为我应该能够开始每个sidekiq工作,并分别跟踪每个关键字。然而,我发现,只要第一个TweetStream::Client连接并跟踪,在该点之后初始化的任何客户端都会立即在sidekiq中“处理”或完成,并且不会跟踪关键字 def perform(app_id) app
TweetStream::Client
实例
我希望如此,因为我应该能够开始每个sidekiq工作,并分别跟踪每个关键字。然而,我发现,只要第一个TweetStream::Client
连接并跟踪,在该点之后初始化的任何客户端都会立即在sidekiq中“处理”或完成,并且不会跟踪关键字
def perform(app_id)
app = App.get(app_id)
client = prepare_twitter_client(app)
stream_tweets("google", app_id, client)
end
def prepare_twitter_client(app)
# Use the companies twitter app token to connect to the stream
@twitter_client = nil
@twitter_client = TweetStream::Client.new
@twitter_client.consumer_key = app.tw_consumer_key
@twitter_client.consumer_secret = app.tw_consumer_secret
@twitter_client.oauth_token = app.tw_oauth_token
@twitter_client.oauth_token_secret = app.tw_oauth_secret
@twitter_client.auth_method = :oauth
return @twitter_client
end
def stream_tweets(company_domain, app_id, twitter_client)
twitter_client.on_error do |message|
end.track(company_domain) do |status|
logger.info "Tweet found that match the criteria. #{status.text}"
create_new_impression(status, app_id)
end
end
我怀疑TweetStream在创建单独的实例和跟踪来自多个客户端的关键字时遇到问题。已解决
TweetStream
似乎不是线程安全的。尽管我会为每个sidekiq作业实例重新创建一个新的TwitterStream::Client
,甚至拥有不同的Twitter帐户/应用程序,但我无法同时运行多个作业
我将TweetStream替换为,它工作得非常好