2013-03-22 81 views
0

什麼是在服務器上命名和存儲生成文件的最佳方式,例如,如果用戶在接下來的5分鐘內請求文件,則返回它,否則返回錯誤代碼?我正在使用Python和Webapp2(儘管這將適用於任何WSGI服務器)。短時間在服務器上存儲文件

+0

您有什麼擔憂?你想減少/消除重複名稱的可能性嗎?或者你爲了安全起見也想要不可預測性? – gaige 2013-03-22 21:56:01

+0

在這種情況下,安全性並不重要。 – ian93 2013-03-23 00:43:41

+0

那麼,你在尋找客戶端還是服務器代碼,或者只是一個機制?從問題中不清楚您要查找的細節層次。 – gaige 2013-03-23 10:13:27

回答

0

我建議在服務器上使用客戶端創建的UUID,當服務器存儲它時,向客戶端發回錯誤(強制重試)。在大多數情況下,UUID將是完全獨特的,不會與已存儲的任何內容相沖突。如果確實如此,客戶可以選擇一個新名字並重試。如果您希望稍微好一些,請在兩次重試之間等待幾毫秒,以減少重複發生衝突的可能性。

這將是我對這種特定的,不安全的短期存儲問題的處理方法。

至於刪除,我會留在服務器的責任,以間隔刪除它們,基本上檢查是否有任何文件大於5分鐘,並刪除它們。只要進行中的下載將文件打開,它就不會中斷。

如果你想留在控制客戶端,你不會有一個簡單的方法來強制刪除當客戶端處於脫機狀態,所以我建議保持按日期順序排列的文件列表並將其刪除:

在後臺線程,如果你希望運行時間長
  • 在啓動時(這將需要持續的這些磁盤)作爲必要
    • 在關機(不需要持續到磁盤)

    但是,如果您發生崩潰或丟失持久性信息,所有這些機制都容易在服務器上留下不必要的文件,所以我仍然建議將刪除作爲服務器的責任。

  • +0

    如何清理文件?確保在短時間內被刪除的最佳方式是什麼? – ian93 2013-03-23 15:00:42

    相關問題