2012-12-20 26 views
0

我創建一個web服務來抓取外部網站的一堆圖像,用戶指定並將它們存儲在S3上。rails服務器到服務器的圖像傳輸與heroku的本地文件系統

該應用程序託管在heroku上。

流量爲Heroku的應用程式:
1.呼叫出來www.example.com/image.jpg並保存文件在本地
2.處理圖像分割成不同的尺寸
3.上傳圖像S3

我很擔心heroku的ephemeral file system。我只是將其用作/ tmp存儲,但我擔心會遇到一些限制。如果用戶從本地機器上傳,那麼我可以直接進行S3上傳,但由於它來自另一臺服務器,所以我沒有看到任何方法。

有沒有人在嘗試處理大量文件時遇到了heroku臨時本地文件系統的問題?

+0

在執行此操作之前,您有沒有遇到過任何問題,或者您在執行此操作之前是否只是在尋找其他人的經驗?另外,你能定義「批次」嗎? – regulatethis

+0

我還沒有遇到問題。尋找其他人的經驗。不知道有多少人,這不是關於規模,而是更多關於heroku短暫文件系統的可靠性。如果我每分鐘拍攝1000張圖像,我總是可以投放更多的動態圖像,但是如果10%的時間本地文件存儲損壞,那麼它不可行 – djburdick

+0

我認爲如果您每分鐘持續拍攝1000張圖像,不想冒失去任何圖像的風險,當你在排隊時,你肯定希望將圖像存儲在一些可靠的地方。 Heroku中的文件系統不保證在那裏很長時間。 – regulatethis

回答

1

使用PaperClip,您可以選擇爲圖像提供remote_url。您仍然可以直接上傳到S3並避免使用Heroku文件系統的風險。

+0

你碰巧知道這是否處理了所有的內存?還是需要使用/ tmp存儲,以便imagemagick可以對其進行操作? thx的反饋! – djburdick

+0

對不起,我不確定Heroku中的ImageMagick實現,但是由於resize-and-upload-to-S3設置在臨時文件系統之前工作,我猜它可能在內存中,或者Heroku提供ImageMagick所需的特權創建可靠的本地副本。他們建議先將原始文件保存到S3中,然後使用後臺工作人員進行圖像處理,這樣dynos就不會被捆綁,從而影響最終用戶體驗。 –