gpt4 book ai didi

ruby-on-rails-4 - Sidekiq 独特的作业处理

转载 作者:可可西里 更新时间:2023-11-01 11:13:31 28 4
gpt4 key购买 nike

我需要确保 25 个工作人员中的任何一个同时处理每个 user_id 的工作不超过一个,以避免死锁。

我已经尝试过 sidekiq 独特的作业,但死锁不断发生,因为它一直在尝试处理队列中所有待处理的作业,而不是在参数中查找 user_id。

谢谢

class MyWork   
include Sidekiq::Worker
sidekiq_options :queue => "critical", unique: true,
unique_args: ->(args) { [ args.user_id ] }


def perform(work_params)

最佳答案

sidekiq_option args 是一个数组,其中第一个位置是您的 works_params。然后你应该这样做:

class MyWork
include Sidekiq::Worker
sidekiq_options :queue => "critical", unique: until_executed,
unique_args: ->(args) { [ args.first.user_id ] }

def perform(work_params)

请注意,unique: true 已弃用,因此您应该使用 unique: until_executed 或任何最适合您的工作人员的方式。参见 here其他选项。

关于ruby-on-rails-4 - Sidekiq 独特的作业处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229687/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com