resque ワーカーで redis pub/sub を使用しています。最初のジョブの後に resque がハングします。私のワーカー タスクは性質をブロックしています。私の理解では、resque は新しいジョブごとに新しいスレッドをフォークします。
私の労働者は以下の通りです
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-web ルート 5370 1887 0 15:40 pts/1 00:00:04 resque-2.0.0.pre.1: フォークされた 5784 1363947580 ルート 5784 5370 0 15:49 pts/1 00:00:00 resque-2.0.0.pre.1: 1363947580 [SendInvitation] ルート 5803 2140 0 15:49 pts/2 00:00:00 から outbound_dialer を処理中--color=自動レスキュー
私はすでに COUNT=5 を試しました