我有以下任務Rails應用程序中要做到:如何正確使用Resque工人?
- 下載視頻
- 修剪與FFMPEG視頻給定的持續時間之間(如:00:02 - 00:09)
- 將視頻轉換到一個給定的格式
- 將轉換後的視頻到一個文件夾
因爲我想做到這一點在後臺工作,我用1名resque工人,其處理隊列。
對於第一份工作,我創建了這樣 @queue = :download_video
,做它的任務,並在我致電Resque.enqueue(ConvertVideo, name, itemId)
前進到下一個任務的任務結束的隊列。通過這種方式,我創建了一個隊列,當一個任務完成時隊列就會排隊。
這是非常錯誤的,因爲如果第一份工作開始排隊的其他工作(一個來自另一個),直到排隊作業的第一清單完成了,那麼一切得到的用1名工人。
如何來優化?我試圖增加更多的工人來排隊工作,但結果是錯誤的和不可預測的。
另一個方面,每個作業保存在數據庫中的狀態,我需要的就業機會以正確的順序進行處理。
如果每個工人從上面做的一個作業,並至少有4名工人?如果我把這個數量翻倍到8個工人,這是否會有所改進?