確定這可能是一個好方法,我猜...
您可以編寫一個腳本來檢查你的目錄,並刪除過時的文件,並選擇從聯合國文件刪除最早的文件。計算自該文件創建以來經過了多少時間,並計算刪除該文件的剩餘時間。然後用剩餘時間撥打sleep
功能。當sleep
時間結束並且另一個循環開始時,將會(至少)一個文件被刪除。如果目錄中沒有文件,請將sleep
時間設置爲5分鐘。
通過這種方式,您將確保每個文件在5分鐘後完全刪除,但是當同時創建大量文件時,睡眠時間將大大減少,並且您的功能將越來越頻繁地檢查每個文件。爲避免在開始另一個循環之前添加適當的延遲時間,例如,如果最早的文件是4分鐘,可以將睡眠設置爲60+30
秒(將所有時間計算增加30秒)。
一個例子:
from datetime import datetime
import time
import os
def clearDirectory():
while True:
_time_list = []
_now = time.mktime(datetime.now().timetuple())
for _f in os.listdir('/path/to/your/directory'):
if os.path.isfile(_f):
_f_time = os.path.getmtime(_f) #get file creation/modification time
if _now - _f_time < 300:
os.remove(_f) # delete outdated file
else:
_time_list.append(_f_time) # add time info to list
# after check all files, choose the oldest file creation time from list
_sleep_time = (_now - min(_time_list)) if _time_list else 300 #if _time_list is empty, set sleep time as 300 seconds, else calculate it based on the oldest file creation time
time.sleep(_sleep_time)
但正如我所說,如果oftenly創建的文件,最好是將延遲時間設置爲睡眠時間
time.sleep(_sleep_time + 30) # sleep 30 seconds more so some other files might be outdated during that time too...
而且,它是更好的閱讀getmtime功能的細節。
最好的方式看起來像寫一個腳本,將檢查文件和刪除舊文件。此外,將其添加到cronjob列表將保證您的腳本正在運行。 – FallenAngel
相關,並可能有所幫助http://stackoverflow.com/questions/3582414/removing-tmp-file-after-return-httpresponse-in-django – 18bytes
@Alan我會使用一個cron作業以及 – 18bytes