我有一個簡單的安裝程序,用於在rails中構建的API。帶有sidekiq的Heroku文件存儲器
通過POST上傳一個zip文件,我將該文件存儲在rails.root/tmp
中,使用carrierWave,然後使用sidekiq將s3上傳到後臺。
我暫時存儲文件的原因是因爲我無法發送一個複雜的對象到sidekiq,所以我存儲它併發送id,並讓sidekiq找到它並使用它,然後刪除文件完成。
問題是,一旦我的sidekiq工作人員通過它的路徑找到文件,它就不能因爲它不存在。我讀過,當重新配置/服務器重啓等情況下,heroku的短暫文件系統會刪除它的文件。
這些事情都沒有發生,但文件不存在。所以我的理論是,sidekiq worker實際上是試圖打開在它自己的文件系統上傳遞給它的路徑,因爲它是一個單獨的工作者,並且該文件不存在。有人可以證實這一點?如果是這種情況,是否有其他方法可以做到這一點?
感謝文件直接上傳到S3。我會考慮這一點,不幸的是它是前端的iphone應用程序,但會查看類似的解決方案 – volk
在您的情況下,解決方案可能會更簡單。在您的iOS應用程序中,您可以直接上傳到S3,而無需關心不公開任何S3憑證。我對iOS開發並不熟悉,但是有適合您的直接S3文件存儲的SDK。 –