52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from biopro.file.manager import FileManager
|
|
from biopro.util.stack import print_exception
|
|
from .socket import ServerThread
|
|
|
|
|
|
class RoutineTrashThread(ServerThread):
|
|
def __init__(self,
|
|
manager: FileManager,
|
|
interval_hours: int,
|
|
trash_expire_days: int,
|
|
remove_expire_days: int):
|
|
super().__init__('Trash')
|
|
|
|
self._manager = manager
|
|
self._interval = interval_hours * 60 * 60
|
|
self._trash_expire = trash_expire_days
|
|
self._remove_expire = remove_expire_days
|
|
|
|
@property
|
|
def routine_interval(self) -> int:
|
|
return self._interval
|
|
|
|
@property
|
|
def trash_expire(self) -> int:
|
|
return self._trash_expire
|
|
|
|
@property
|
|
def remove_expire(self) -> int:
|
|
return self._remove_expire
|
|
|
|
def setup(self) -> None:
|
|
super().setup()
|
|
|
|
# perform remove
|
|
self.log_info('clean trash')
|
|
self._manager.clean_trash(self._remove_expire)
|
|
self.log_info('clean trash done')
|
|
|
|
def routine(self, event = None) -> None:
|
|
event.wait(self._interval)
|
|
|
|
try:
|
|
self.log_info('clean trash')
|
|
self._manager.clean_trash(self._remove_expire)
|
|
self.log_info('clean storage')
|
|
self._manager.perform_trashing(self._trash_expire)
|
|
except:
|
|
print_exception(self)
|
|
|
|
finally:
|
|
self.log_info('clean done')
|