Corregge il cleanup dei path live/match_{uuid}, rimuove sempre il path a fine sessione e lo esegue ogni ora via cron.
Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.2 KiB
Ruby
33 lines
1.2 KiB
Ruby
namespace :streams do
|
|
desc "Termina sessioni attive non in onda su MediaMTX e rimuove path RTMP orfani"
|
|
task cleanup_stale: :environment do
|
|
client = Mediamtx::Client.new
|
|
online = client.online_path_names
|
|
stale = StreamSession.broadcasting.includes(match: :team).reject do |session|
|
|
online.include?(session.mediamtx_path_name)
|
|
end
|
|
|
|
puts "MediaMTX online: #{online.size}"
|
|
puts "Sessioni da chiudere: #{stale.size}"
|
|
|
|
stale.each do |session|
|
|
Sessions::Stop.new(session).call
|
|
puts " ended #{session.id} (#{session.match.team.name} vs #{session.match.opponent_name})"
|
|
rescue StandardError => e
|
|
session.finish! if session.may_finish?
|
|
client.delete_path(session) if session.mediamtx_path_name.present?
|
|
puts " ended #{session.id} (fallback: #{e.message})"
|
|
end
|
|
|
|
result = Mediamtx::CleanupOrphanPaths.new(client: client).call
|
|
puts "Path MediaMTX rimossi: #{result.removed} (saltati: #{result.skipped})"
|
|
puts "Fatto."
|
|
end
|
|
|
|
desc "Rimuove path MediaMTX orfani (dirette già terminate)"
|
|
task cleanup_orphan_paths: :environment do
|
|
result = Mediamtx::CleanupOrphanPaths.new.call
|
|
puts "Path MediaMTX rimossi: #{result.removed} (saltati: #{result.skipped})"
|
|
end
|
|
end
|