0

いくつかのTwitterユーザー名を取得するスクリプトがあり、それらのユーザーのためにTwitterからより多くの情報を取得したいと思います。多くのユーザーがいるので、Resqueを使って並行して処理したいと思います。

メインスクリプトでは、Oauthを使用してアクセストークンを生成していますが、それをワーカーに正しく渡すにはどうすればよいですか?

これは、ワーカーを開始するコードです。

work_data = @messages[0...100]
Resque.enqueue(TwitterWorker, work_data, access_token)

どこaccess_tokenにありますかOAuth::AccessToken

ワーカーを起動すると、次のようなエラーが発生します。

failed: #<NoMethodError: undefined method `request' for "#<OAuth::AccessToken:0x007f8ecb9a7fe8>":String>

したがって、access_tokenパラメーターは正しくシリアル化または非シリアル化されないと思います。

ワーカーでアクセストークンを取得することはできますが、冗長であるように思われるため、高速にする必要もあります。

4

1 に答える 1

0

さて、私は自分でそれを理解しました。ジョブを作成する前にトークンをシリアル化し、シリアルトークンをパラメーターとして渡してから、ワーカーのシリアル化を解除しました。

work_data = @messages[0...100]
serial_token = YAML::dump(access_token)
Resque.enqueue(TwitterWorker, work_data, serial_token)

そして私の労働者では、私はそれをシリアル化解除しました:

def self.perfom(data, serial_token)
  token = YAML::load(serial_token)
  ....
end
于 2012-08-27T12:27:38.267 に答える