-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HipChat のメッセージ履歴取得を高速化する方法を検討する #5
Comments
検討まず、
については、これに対抗する方法を思いつかなかった。 つまり、1ルームあたりのメッセージ数が多いときは、もうどうにもならない。 トータルでの処理時間を減らすことしか思い付いていない。 そうすると、
下手すると、20秒とかかかっていたので、Rate limits(5分で 500 リクエスト)いっぱいまでリクエストを送ろうと考えると、マルチスレッドだと 20 〜 30 スレッドとかにする必要があり、メモリがたくさん必要。 時間がかかっているのは(いま見えている限りでは)HipChat からのレスポンスを待つところのみなので、これに素直に対応しようとしたら、「案 (1) コールバック」が効率が良いだろうなという所感。 使用言語については一旦ペンディングやっぱり Node.js で書くのが素直かなあ... と思っているけど、中間処理に DB が不要か、先に考えたい(CSV 作成処理とか) 理由: DB を扱うんだったら、Node.js より Ruby 使うほうが得意。Ruby というか ActiveRecord 使いたい。 |
使用言語について
という判断をしたので、Ruby を採用する。 まずは、一旦、高速化は横に置いてシンプルに実装してみて、そこから、高速化という作戦をとる。 |
start-index というオプション
HipChat - API - View room history
というのが見えた。これを使えばなんとかなる...!? room statistics と組み合わせたとしても、時間範囲を指定してメッセージを取得するのは厳しそういまのところ、イイ感じの方法が思い浮かばない。仮に下記と組み合わせたとして。全履歴を取るのはイケそうな気がするが、時間範囲を指定するのは厳しそう。 HipChat - API - Get room statistics |
課題の整理
制約 (1) 1リクエストに時間がかかる
こちら にあるように、
つまり、遅い
制約 (2) 次のリクエストのオフセットを事前に計算できない
こちら にあるように、HipChat API からレスポンスを受け取った後に、次のリクエストのオフセットの date を計算しないといけない
(次のリクエストのオフセットを事前に計算できない)
制約 (3) トータルでたくさんリクエストを投げる必要がある
こちら にあるように、HipChat API にリクエスト送る、レスポンスを受け取る、JSON ファイル保存、次のリクエストを送る... と直列に処理していたら、
というような結果になる。そして、
となる。
どげんかするぞ
これらの制約を踏まえて、どげんかして高速化する方法を考える。
この Issue の完了条件
The text was updated successfully, but these errors were encountered: