furikake6000 / RailsTest3

F国からのスパイ
https://spyfromf.nc2.co
9 stars 1 forks source link

refresh_wordcaches を改善したほうがよさそう #58

Closed mix3 closed 6 years ago

mix3 commented 6 years ago

手元で動かしてみてログイン後のトップページで 10sec 掛かっていて print デバッグでどこかなと探ったら refresh_wordcaches で必ず50回API叩くループがあってそこが圧倒的に時間掛かるようでした

refresh_wordcaches のループを改善した方が良さそうです。ぱっと思いついたのは、

などでループを減らす。

他には since_id を使うと以前検索したものより新しいのだけ検索できるのでそれを利用して例えば、 スコアリングに必要なユーザの発言をDBに保存(2日目前まで保存、日が経って2日目以降のがあったら消す)しておいて since_id で検索範囲を常に絞れるようにする

などがあるかなと思います。

まだこれでも日を空けて来た人の初回が重くなるのは防げないので何か工夫が必要そうで、自分だと同期処理でうまくやる方法が思いつかないので非同期処理にしちゃうかもしれないです。例えば以下みたいな。

あとは TwitterAPI について検索していたら Account Activity API (まだBetaみたいですが)が Webhook で UserStreaming API の代替になるものが来るみたいなので、こっちを使えるようになるとAPI叩く回数減らすとか考えなくて良くなるので全部解決しそうな雰囲気を感じました

ということで refresh_wordcaches のループを減らすところからやると良いのではないかという感想でした。ご参考までに。

mix3 commented 6 years ago

Yesterday より以前だったら throw :finish

これはすでにされてましたね。失礼しました

どうもTwitter連携して以降のツイートしか検索できないみたいなので、連携直後は直近の発言しか出てこないのですぐに empty になりループを抜けずにAPIを叩いてしまうようです

tweets が空だったら thow :finish をするとこれについてはぐっと改善しそう

mix3 commented 6 years ago

ご対応ありがとうございます close します