Il relay HLS→RTMPS resta sul worker/agent del nodo assegnato, così tre dirette contemporanee restano in onda sul sito e sul canale della società senza schermo nero. Co-authored-by: Cursor <cursoragent@cursor.com>
24 lines
732 B
Ruby
24 lines
732 B
Ruby
# Ferma il relay solo sull'owner. Se il job gira su un altro host, requeue breve.
|
|
class YoutubeRelayStopJob < ApplicationJob
|
|
queue_as Streams::YoutubeRelay::QUEUE
|
|
|
|
discard_on ActiveJob::DeserializationError
|
|
|
|
def perform(session_id, attempts = 0)
|
|
session = StreamSession.find_by(id: session_id)
|
|
return unless session
|
|
|
|
unless Streams::YoutubeRelay.worker?
|
|
# Solo i worker relay processano questa coda in modo utile.
|
|
return
|
|
end
|
|
|
|
result = Streams::YoutubeRelay.stop_on_worker!(session)
|
|
return unless result == :wrong_host
|
|
return if attempts >= 30
|
|
|
|
self.class.set(wait: 2.seconds, queue: Streams::YoutubeRelay.queue_for(session))
|
|
.perform_later(session_id, attempts + 1)
|
|
end
|
|
end
|