Skip to content

Commit d2d3609

Browse files
sub_account
1 parent 97d02cb commit d2d3609

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

dtable_events/app/app.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from dtable_events.dtable_io.dtable_io_server import DTableIOServer
88
from dtable_events.tasks.instant_notices_sender import InstantNoticeSender
99
from dtable_events.tasks.email_notices_sender import EmailNoticesSender
10+
from dtable_events.tasks.inactive_expired_sub_account_worker import InactiveExpiredSubAccountsWorker
1011
from dtable_events.tasks.dtables_cleaner import DTablesCleaner
1112
from dtable_events.tasks.dtable_updates_sender import DTableUpdatesSender
1213
from dtable_events.tasks.dtable_real_time_rows_counter import DTableRealTimeRowsCounter
@@ -60,6 +61,7 @@ def __init__(self, config, seafile_config, task_mode):
6061
# cron jobs
6162
self._instant_notices_sender = InstantNoticeSender(config)
6263
self._email_notices_sender = EmailNoticesSender(config)
64+
self._inactive_expired_sub_accounts_worker = InactiveExpiredSubAccountsWorker(config)
6365
self._dtables_cleaner = DTablesCleaner(config)
6466
self._dtable_updates_sender = DTableUpdatesSender(config)
6567
self._dtable_notification_rules_scanner = DTableNofiticationRulesScanner(config)
@@ -99,6 +101,7 @@ def serve_forever(self):
99101
# cron jobs
100102
self._instant_notices_sender.start() # default True
101103
self._email_notices_sender.start() # default True
104+
self._inactive_expired_sub_accounts_worker.start()# default False
102105
self._dtables_cleaner.start() # default True
103106
self._dtable_updates_sender.start() # default True
104107
self._dtable_notification_rules_scanner.start() # default True
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import os
2+
import logging
3+
from threading import Thread, Event
4+
5+
from dtable_events.utils import get_python_executable, run
6+
from dtable_events.app.config import dtable_web_dir
7+
8+
try:
9+
from seahub.settings import ENABLE_SUB_ACCOUNT
10+
except ImportError as err:
11+
ENABLE_SUB_ACCOUNT = False
12+
13+
logger = logging.getLogger(__name__)
14+
15+
__all__ = [
16+
'InactiveExpiredSubAccountsWorker',
17+
]
18+
19+
20+
class InactiveExpiredSubAccountsWorker(object):
21+
22+
def __init__(self, config):
23+
self._enabled = ENABLE_SUB_ACCOUNT
24+
self._interval = 12 * 3600 # 12h
25+
26+
def start(self):
27+
if not self._enabled:
28+
logging.warning('Can not start inactive expired sub accounts: it is not enabled!')
29+
return
30+
logging.info('Start inactive expired sub accounts.')
31+
32+
InactiveExpiredSubAccountsWorkerTimer(interval=self._interval).start()
33+
34+
35+
class InactiveExpiredSubAccountsWorkerTimer(Thread):
36+
37+
def __init__(self, interval):
38+
Thread.__init__(self)
39+
self._interval = interval
40+
self.finished = Event()
41+
42+
def run(self):
43+
while not self.finished.is_set():
44+
self.finished.wait(self._interval)
45+
if not self.finished.is_set():
46+
logging.info('Starts inactive expired sub accounts...')
47+
try:
48+
python_exec = get_python_executable()
49+
manage_py = os.path.join(dtable_web_dir, 'manage.py')
50+
51+
cmd = [
52+
python_exec,
53+
manage_py,
54+
'inactive_expired_sub_accounts',
55+
]
56+
with open(self._logfile, 'a') as fp:
57+
run(cmd, cwd=dtable_web_dir, output=fp)
58+
except Exception as e:
59+
logging.exception('error when inactive expired sub accounts: %s', e)
60+
61+
def cancel(self):
62+
self.finished.set()

0 commit comments

Comments
 (0)