UnisKB/apps/common/job/client_access_num_job.py

46 lines
1.4 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:
"""
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from django.db.models import QuerySet
from django_apscheduler.jobstores import DjangoJobStore
from application.models import ApplicationChatUserStats
from common.utils.lock import try_lock, un_lock, lock
from common.utils.logger import maxkb_logger
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
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.info(_('start reset access_num'))
QuerySet(ApplicationChatUserStats).update(intraday_access_num=0)
maxkb_logger.info(_('end reset access_num'))
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:
scheduler.start()
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')