gpt4 book ai didi

ruby - resque 被 worker job 阻塞

转载 作者:可可西里 更新时间:2023-11-01 11:44:46 33 4
gpt4 key购买 nike

我正在使用带有 resque worker 的 redis pub/sub,resque 在第一份工作后挂起,我的 worker 任务是阻塞性质的。我的理解是 resque 为每个新工作创建一个新线程。

我的 worker 如下

class SendInvitation
@queue = :outbound_dialer
def self.perform(contact_type, contact_no, invitation_audio_file)
@invitationManager = DRbObject.new_with_uri(DRB_SERVER_URL)

task_id = @invitationManager.send_invitation(contact_type, contact_no, invitation_audio_file)
puts task_id+"is the currents task id"
$redis = Redis.new(:timeout=>REDIS_TIMEOUT)
$redis.subscribe('outbound_dialer') do |on|
on.message do |channel, msg|
data = JSON.parse(msg)
if(data['id'] == task_id)
puts 'here'
@invitationManager = nil
# exit
end
end
end
end
end

ps -ef 结果

这里线程 5784 正在阻塞 resque 任务,一旦我终止当前处理任务,resque 开始下一个任务,并在完成后再次开始等待根 3595 1 0 14:14 ? 00:00:34/usr/bin/ruby1.9.1/usr/local/bin/resque-webroot 5370 1887 0 15:40 pts/1 00:00:04 resque-2.0.0.pre.1: 在 1363947580 fork 5784root 5784 5370 0 15:49 pts/1 00:00:00 resque-2.0.0.pre.1: 从 1363947580 [SendInvitation] 开始处理 outbound_dialerroot 5803 2140 0 15:49 pts/2 00:00:00 grep --color=auto resque

我已经尝试过 COUNT=5

最佳答案

Resque 确实为作业创建了一个新进程(不是线程)。然后它等待 worker 完成并获取下一个工作。如果您想要并行运行更多作业 - 运行更多 resque 工作进程。

关于ruby - resque 被 worker job 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568542/

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