Add a cleanup function to dlfp backend
The DLFP backend doesn't get object older than 60 days: we don't have to store older "seen" value in the storage. Bad news: we have to store the date of the object to perform the cleanup. It will increase the storage size (before a big improvement). Since we didn't store date value before this commit, this feature will work 60 days after module upgrade.
This commit is contained in:
parent
2a97ab0074
commit
2befef94a1
1 changed files with 26 additions and 0 deletions
|
|
@ -21,6 +21,7 @@
|
|||
from __future__ import with_statement
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
import time
|
||||
|
||||
from weboob.tools.backend import BaseBackend, BackendConfig
|
||||
from weboob.tools.newsfeed import Newsfeed
|
||||
|
|
@ -104,6 +105,8 @@ class DLFPBackend(BaseBackend, ICapMessages, ICapMessagesPost, ICapContent):
|
|||
if not getseen and oldhash == newhash:
|
||||
return None
|
||||
self.storage.set('hash', id, newhash)
|
||||
if thread.date:
|
||||
self.storage.set('date', id, thread.date)
|
||||
self.storage.save()
|
||||
|
||||
with self.browser:
|
||||
|
|
@ -184,6 +187,29 @@ class DLFPBackend(BaseBackend, ICapMessages, ICapMessagesPost, ICapContent):
|
|||
self.storage.get('seen', message.thread.id, 'comments', default=[]) + [message.id])
|
||||
self.storage.save()
|
||||
|
||||
lastpurge = self.storage.get('lastpurge', default=0)
|
||||
# 86400 = one day
|
||||
if time.time() - lastpurge > 86400:
|
||||
self.storage.set('lastpurge', time.time())
|
||||
self.storage.save()
|
||||
|
||||
# we can't directly delete without a "RuntimeError: dictionary changed size during iteration"
|
||||
todelete = []
|
||||
|
||||
for id in self.storage.get('seen', default={}):
|
||||
date = self.storage.get('date', id, default=0)
|
||||
# if no date available, create a new one (compatibility with "old" storage)
|
||||
if date == 0:
|
||||
self.storage.set('date', id, datetime.now())
|
||||
elif datetime.now() - date > timedelta(days=60):
|
||||
todelete.append(id)
|
||||
|
||||
for id in todelete:
|
||||
self.storage.delete('hash', id)
|
||||
self.storage.delete('date', id)
|
||||
self.storage.delete('seen', id)
|
||||
self.storage.save()
|
||||
|
||||
def fill_thread(self, thread, fields, getseen=True):
|
||||
return self.get_thread(thread, getseen)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue