UnisKB/apps/common/job/client_access_num_job.py

42 lines
1.3 KiB
Python
Raw Normal View History

2025-07-15 10:35:00 +00:00
# coding=utf-8
"""
@project: maxkb
@Author
@file client_access_num_job.py
@date2024/3/14 11:56
@desc:
"""
from django.db.models import QuerySet
from application.models import ApplicationChatUserStats
from common.job.scheduler import scheduler
2025-07-15 10:35:00 +00:00
from common.utils.lock import try_lock, un_lock, lock
from common.utils.logger import maxkb_logger
def client_access_num_reset_job():
client_access_num_reset_job_lock()
2025-07-16 02:15:45 +00:00
@lock(lock_key="access_num_reset_execute", timeout=30)
2025-07-15 10:35:00 +00:00
def client_access_num_reset_job_lock():
from django.utils.translation import gettext_lazy as _
maxkb_logger.debug(_('start reset access_num'))
2025-07-15 10:35:00 +00:00
QuerySet(ApplicationChatUserStats).update(intraday_access_num=0)
maxkb_logger.debug(_('end reset access_num'))
2025-07-15 10:35:00 +00:00
def run():
2025-07-16 02:15:45 +00:00
if try_lock('access_num_reset', 30 * 30):
2025-07-15 10:35:00 +00:00
try:
2025-07-17 01:55:21 +00:00
maxkb_logger.debug('get lock access_num_reset')
2025-07-15 10:35:00 +00:00
access_num_reset = scheduler.get_job(job_id='access_num_reset')
if access_num_reset is not None:
access_num_reset.remove()
scheduler.add_job(client_access_num_reset_job, 'cron', hour='0', minute='0', second='0',
id='access_num_reset')
finally:
un_lock('access_num_reset')