是否有任何方法將圖像保存到mongo的網格並在後臺異步上傳到S3之後?CarrierWave將圖像保存到網格並在後臺上傳s3
也許有可能鏈上傳者?
下一個問題:使用多個服務器,因此 - 保存到硬盤驅動器映像並運行後臺進程可以位於不同的服務器上。
也 1.它應該從網格中刪除時上傳到s3 2.它應該自動從s3刪除相應的實體銷燬時。
謝謝。
是否有任何方法將圖像保存到mongo的網格並在後臺異步上傳到S3之後?CarrierWave將圖像保存到網格並在後臺上傳s3
也許有可能鏈上傳者?
下一個問題:使用多個服務器,因此 - 保存到硬盤驅動器映像並運行後臺進程可以位於不同的服務器上。
也 1.它應該從網格中刪除時上傳到s3 2.它應該自動從s3刪除相應的實體銷燬時。
謝謝。
我使用臨時變量存儲到gridfs並使Worker(見this)執行從gridfs到s3的異步上傳。
希望這會有所幫助,謝謝。
您的部署體系結構是什麼樣子的?當你說「多個服務器」時,我有點困惑 - 你是指多個mongod實例嗎?另外,當你指定你的需求時,這有點令人困惑。根據要求1,如果你上傳到S3,那麼gridfs文件應該被刪除。但是,根據您的要求,它不能同時存在於S3和Gridfs中,因此需求2似乎與第一個矛盾,即它不應該首先存在於網格中。你是否在Gridfs和S3上保留了一些文件?
如果您正在副本集或分片羣集中運行,則可以在您的gridfs集合上創建一個tailable cursor(您也可以在單個節點上執行此操作,儘管不建議這樣做)。當你看到一個插入操作時(看起來像'op':'i'),你可以執行一個腳本或者在你的應用程序中執行一些操作來從gridfs抓取文件並將相應的文件推送到s3。同樣,當你看到一個刪除操作('op':'d')時,你可以立即從s3中刪除該文件。
可放大光標的美妙之處在於它允許異步操作 - 您可以讓另一個進程監視另一臺服務器上的oplog並執行相應的操作。
我有一些應用程序服務器。接下來的想法:先上傳到gridfs(不是本地文件系統),然後上傳到s3(來自gridfs)。通過Resque在後臺上傳到s3發生的事件。文件系統在這種情況下不起作用,因爲Resque可以在其他機器上運行,而不是在包含文件的機器上運行。因此,gridfs就像全局可訪問的存儲。 –
不確定,但看看[這](http://stackoverflow.com/questions/17871568/rails-3-paperclip-can-i-store-images-both-on-s3-locally/17893929#17893929)幫助 – Viren