我需要轉換視頻在4個線程並行運行腳本紅寶石
比如我有活動記錄模式的視頻與標題:視頻1,視頻2,視頻3,VIDEO4,Video5
所以,我需要執行這樣的事情
bundle exec script/video_converter start
當腳本會處理未轉換的視頻爲4個線程,例如
Video.where(state: 'unconverted').first.process
但如果4個視頻一個轉換,下一個視頻必須被自動添加到線程
,這是什麼最好的解決辦法? Sidekiq寶石?守護進程gem + Ruby手動線程?
現在我使用這個腳本:
THREAD_COUNT = 4
SLEEP_TIME = 5
logger = CONVERTATION_LOG
spawns = []
loop do
videos = Video.where(state:'unconverted').limit(THREAD_COUNT).reorder("ID DESC")
videos.each do |video|
spawns << Spawnling.new do
result = video.process
if result.nil?
video.create_thumbnail!
else
video.failured!
end
end
end
Spawnling.wait(spawns)
sleep(SLEEP_TIME)
end
但這個腳本等待4個視頻,另需4個視頻之後。我想,在轉換完第四個視頻後,它會自動添加到新的線程中,該線程爲空。
線程在某些運行時間不平行,例如, MRI檢查。你用什麼? – sschmeck
即使使用MRI,它也不是那麼簡單,例如如果調用本地代碼釋放GVL或產生ffmpeg進程 –
我正在使用[spawnling gem](https://github.com/tra/spawnling),我在第一條消息 – rs41