AtCoderProblems
AtCoderProblems copied to clipboard
クローラーを統合したい
現状では異なる4つのクロール戦略について、それぞれクローラーがあります。
- crawl_all_submissions
- crawl_for_virtual_contests
- crawl_recent_submissions
- crawl_from_new_contests
ECS でそれぞれについてインスタンスを立てていますが、もし単一の実行可能ファイルでできれば管理が楽になります。
考えているのは message queue を使う方法で、各クローラーは以下のように動きます。
- クローラーは
(クロール戦略, その戦略の状態, クロールするコンテスト, クロールするページ)
をキューから受け取る。 - 1ページクロールする。
- 状態を更新し、次にクロールするページを取得する。
-
(クロール戦略, 更新したその戦略の状態, 更新したクロールするコンテスト, 更新したクロールするページ)
をキューに入れる。
Redis の LPUSH/BRPOP でジョブキューらしいことができるので、クライアントは Redis のリストから BRPOP し続けて、適当なタイミングで LPUSH するやつが入れば良い感じがします。