Tim*_*mer 3 ruby-on-rails sidekiq ruby-on-rails-4
我有 3 个队列正在运行
User
Follower
Default
Run Code Online (Sandbox Code Playgroud)
用户可以导入他的数据,然后由User队列完成。这实际上创建了大量的关注者(多达数百万),并且每个人都有一个 after_create 来在队列中更新自己Follower。
这里的问题是,50 个用户现在可以创建他们的导入,但我只想同时完成 1 个导入。先进先出 - 而Follower-Queue应该仍然与 100 名工人同时工作。示例:1 个用户导入 500.000 个关注者。那么下一个用户导入500万。接下来导入 400。同时加载用户 1 的关注者。
有可能吗?
我的 YAML 看起来像这样
:queues:
- user
- follower
- default
Run Code Online (Sandbox Code Playgroud)
文档现在告诉我,用户队列的优先级很高。但如何判断该队列中只有 1 个作业同时完成?
sidekiq 核心不支持此功能(并且作者不想向其添加此类功能)。然而,有一个外部中间件似乎支持设置每个队列的工作限制,即sidekiq-limit_fetchgem。使用它您应该能够轻松设置您需要的内容:
# sidekiq.yml
:limits:
user: 1
follower: 100
default: 10 # or whatever you like
Run Code Online (Sandbox Code Playgroud)
不过,宝石代码有点旧,您的里程可能会有所不同......
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |