2013-07-13 88 views
0

我在我的模型中有兩個附件,原始的&已修改。Ruby on Rails:在後臺轉換音頻並使用回形針上傳?

我的應用程序允許用戶上傳音頻文件,後端應該將其轉換爲修改後的格式。

使用回形針將原始文件上傳到s3。現在我需要在後臺處理這個文件並將其上傳到s3以及&更新數據庫中修改的附件。

從原始到附件的轉換通過一個簡單的系統命令發生,所以我可以從我的ruby方法調用它。我的問題是安排這些工作的最佳方式是什麼?是delayed_job這是一個很好的選擇,我只是寫一個方法來處理原始文件&保存它,然後調用這個方法有一個延遲?

回答

1

delayed_job是一種應用廣泛的解決方案,您需要密集的工作來完成,但不是馬上。我會推薦它,除非你的用戶需要立即修改文件。

替代方案:

  • Resque
  • Sidekiq
  • 挖土
  • 隊列經典

有關更多選項,請參閱:https://www.ruby-toolbox.com/categories/Background_Jobs

+0

的處理,用戶不會立即需要它。這是你在YouTube上做什麼,上傳你的視頻,然後等待YouTube完成處理。不像您的視頻即時可用。 是否有必要每5分鐘安排一次cron作業來調用ruby腳本,然後處理所有未處理的剪輯? – user2186138

+0

因爲它找到了停機時間並儘可能地處理剪輯,所以延遲作業在您的情況下會更好。克倫真的擅長按計劃進行工作。 – sscirrus

+0

謝謝,這是有道理的。我將等待一段時間,看看有沒有人有任何其他想法可以解決這個問題。乾杯! – user2186138

0

Sidekiq是做的確實不錯的選擇背景tivities。

因爲它只是一次性活動所以cron工作不是理想的需要。

一旦完成上傳原始視頻的過程,您可以在Sidekiq中添加作業,其中包含將會調用工人類的必需參數,並執行剩餘的處理。

https://github.com/mperham/sidekiq/wiki

你也有良好的監測插件來監控你的工作

https://github.com/socialpandas/sidekiq_monitor

+0

謝謝。如果我在兩臺不同的服務器上對同一個數據庫使用sidekiq worker,是否會導致問題? – user2186138

+0

這應該不是問題,只要確保你的代碼是線程安全的 – Icicle

+0

正常的做法是讓工作進程運行sidekiq,並且sidekiq本身有多個線程......這比運行兩個不同的進程更好。 – Icicle

相關問題