2014-11-04 22 views
6

我正在編寫一個程序,下載一個大文件(〜150MB)並將數據解析爲更有用的文本格式文件。下載和特別是解析的過程很慢(總共大約20分鐘),所以我想緩存結果。使用狗狗基於修改時間緩存下載的文件

下載的結果是一堆文件,解析結果是一個文件,所以我可以手動檢查這些文件是否存在,如果是,檢查它們的修改時間;但是,因爲我已經在代碼中的其他地方使用redis後端進行web服務調用的dogpile,所以我想知道是否可以使用dogpile?

所以我的問題是:可以使用dogpile緩存基於其修改時間的文件?

+0

是否可以在下載文件之前檢查服務器中文件的修改時間? – suzanshakya 2015-01-23 14:18:55

回答

0

爲什麼你不想鴻溝程序幾個部分:

  • 下載

  • 解析器&保護

  • 工作者結果

您可以使用緩存變量來存儲值t您需要的帽子,您將在文件更新時更新。

import os 
    import threading 
    _lock_services=threading.Lock() 
    tmp_file="/tmp/txt.json" 
    update_time_sec=3300 
    with _lock_services: 
    # if file was created more the 50min ago 
    # here you can check if file was updated and update your cache variable 
     if os.path.getctime(tmp_file) < (time.time() - update_time_sec): 
      os.system("%s >%s" %("echo '{}'",tmp_file)) 

     with open(tmp_file,"r") as json_data: 
      cache_variable = json.load(json_data)