2014-11-04 4 views
6

큰 파일 (~ 150MB)을 다운로드하고 더 유용한 텍스트 형식 파일로 데이터를 구문 분석하는 프로그램을 작성하고 있습니다. 다운로드 및 특히 구문 분석의 프로세스는 느리기 때문에 (총 20 분) 결과를 캐시에 저장하고 싶습니다.수정 된 시간을 기반으로 다운로드 한 파일을 도크 파일을 사용하여 캐싱

다운로드 결과는 많은 파일이므로 분석 결과는 단일 파일이므로 수동으로 이러한 파일이 존재하는지 확인하고 수정할 수 있습니다. 그러나 코드의 다른 곳에서 웹 서비스 호출을위한 redis backend와 함께 이미 dogpile을 사용하고 있기 때문에 dogpile이이 코드에 사용될 수 있는지 궁금해하고있었습니다.

제 질문은 : dogpile을 사용하여 수정 된 시간을 기준으로 파일을 캐시 할 수 있습니까? 결과

사용할 수와

  • 노동자 보호기

    • 다운

    • 파서 & : 당신은 여러 부분으로 나누어 프로그램을하지 않으려는 이유는

  • +0

    파일을 다운로드하기 전에 서버에서 파일의 수정 된 시간을 확인할 수 있습니까? – suzanshakya

    답변

    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)