Skip to content

Commit 0759ad7

Browse files
committed
feat: Access num reset job
1 parent dd2fbb5 commit 0759ad7

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

apps/common/job/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
@date:2024/3/14 11:54
77
@desc:
88
"""
9-
#from .client_access_num_job import *
109
from .clean_chat_job import *
1110
from .clean_debug_file_job import *
11+
from .client_access_num_job import *
1212

1313

1414
def run():
15-
#client_access_num_job.run()
15+
# client_access_num_job.run()
1616
clean_chat_job.run()
1717
clean_debug_file_job.run()
18+
client_access_num_job.run()
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# coding=utf-8
2+
"""
3+
@project: maxkb
4+
@Author:虎
5+
@file: client_access_num_job.py
6+
@date:2024/3/14 11:56
7+
@desc:
8+
"""
9+
import logging
10+
11+
from apscheduler.schedulers.background import BackgroundScheduler
12+
from django.db.models import QuerySet
13+
from django_apscheduler.jobstores import DjangoJobStore
14+
15+
from application.models import ApplicationChatUserStats
16+
from common.utils.lock import try_lock, un_lock, lock
17+
from common.utils.logger import maxkb_logger
18+
19+
scheduler = BackgroundScheduler()
20+
scheduler.add_jobstore(DjangoJobStore(), "default")
21+
22+
23+
def client_access_num_reset_job():
24+
client_access_num_reset_job_lock()
25+
26+
27+
@lock(lock_key="access_num_reset", timeout=30)
28+
def client_access_num_reset_job_lock():
29+
from django.utils.translation import gettext_lazy as _
30+
maxkb_logger.info(_('start reset access_num'))
31+
QuerySet(ApplicationChatUserStats).update(intraday_access_num=0)
32+
maxkb_logger.info(_('end reset access_num'))
33+
34+
35+
def run():
36+
if try_lock('access_num_reset', 30):
37+
try:
38+
scheduler.start()
39+
access_num_reset = scheduler.get_job(job_id='access_num_reset')
40+
if access_num_reset is not None:
41+
access_num_reset.remove()
42+
scheduler.add_job(client_access_num_reset_job, 'cron', hour='0', minute='0', second='0',
43+
id='access_num_reset')
44+
finally:
45+
un_lock('access_num_reset')

0 commit comments

Comments
 (0)