Skip to content
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

非同期処理を実現するためにSidekiqを導入する #43

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

kakeru-one
Copy link
Contributor

@kakeru-one kakeru-one commented Oct 15, 2024

対応するissue

  • closes #0

対応内容

  • 非同期処理を実現するためにSidekiqを導入した。
  • redisを導入した。

@kakeru-one
Copy link
Contributor Author

kakeru-one commented Oct 15, 2024

Redisの動作確認

Redisにキューイングされてなさそう
ちゃんとキューイングできてた

$ docker exec -it sns-archive-viewer_redis redis-cli

127.0.0.1:6379> LRANGE queue:default 0 -1
(empty array)

127.0.0.1:6379> keys *
 1) "j|20241015|15:3"
 2) "queues"
 3) "stat:processed:2024-10-15"
 4) "stat:failed"
 5) "stat:failed:2024-10-15"
 6) "j|20241015|15:1"
 7) "HardWorker-15-15:1"
 8) "stat:processed"
 9) "schedule"
10) "c81dbc6ed86c:1:42528dbe9044"
11) "processes"
12) "HardWorker-15-15:3"

即時実行のキューばかりだったからかも
代わりに、schedule キューにジョブがスケジュールされているのがわかる。

127.0.0.1:6379> ZRANGE schedule 0 -1 WITHSCORES
1) "{\"retry\":true,\"queue\":\"default\",\"class\":\"HardWorker\",\"args\":[\"Classmethod\",1],\"jid\":\"e5a781020e1cd4cc3111b161\",\"created_at\":1729004498.5275555}"
2) "1729015298.5275378"
3) "{\"retry\":true,\"queue\":\"default\",\"class\":\"HardWorker\",\"args\":[\"Classmethod\",1],\"jid\":\"a553866b00b62bed18d07a7a\",\"created_at\":1729004580.8465462}"
4) "1729015380.8465264"
5) "{\"retry\":true,\"queue\":\"default\",\"class\":\"HardWorker\",\"args\":[\"Classmethod\",1],\"jid\":\"c9cba74b47916a80bbfa1e31\",\"created_at\":1729004581.6576252}"
6) "1729015381.6575854"
7) "{\"retry\":true,\"queue\":\"default\",\"class\":\"HardWorker\",\"args\":[\"Classmethod\",1],\"jid\":\"5ec2b0a0729988505a2552b8\",\"created_at\":1729004582.3002841}"
8) "1729015382.3002155"

参考

https://qiita.com/hosopy/items/d2c87b6489991091ddab

@@ -42,6 +42,25 @@ services:
interval: 5s
timeout: 10s
retries: 5
sidekiq:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ECSとかだと、別タスクとして実行したいので、分けた

@kakeru-one
Copy link
Contributor Author

kakeru-one commented Oct 15, 2024

TODO

  • memosを一括登録する非同期処理を書く。
    • activerecord-importを使う。
  • リトライ処理において、指数バックオフを設定しておく。
  • 基底クラスとなるApplicationWorkerを実装しておく。
  • 管理画面からみれるようにしておく。

実装以外のTODO

  • Sidekiq_options queue: "default"や、queue_as :defaultが何かを学ぶ
  • sidekiq_throttleとは何か。ttlやlimitを設定できる。
  • sidekiq_retry_in { |count| (count ** 7) + 15 }による指数バックオフ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant