Merge remote-tracking branch 'origin/v2' into v2

This commit is contained in:
liqiang-fit2cloud 2025-07-16 16:24:50 +08:00
commit caf89e39a7
4 changed files with 25 additions and 23 deletions

View File

@ -2,20 +2,16 @@
import datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from django.db import transaction from django.db import transaction
from django.db.models import Q, Max from django.db.models import Q, Max
from django.utils import timezone from django.utils import timezone
from django_apscheduler.jobstores import DjangoJobStore
from application.models import Application, Chat, ChatRecord from application.models import Application, Chat, ChatRecord
from common.job.scheduler import scheduler
from common.utils.lock import try_lock, un_lock, lock from common.utils.lock import try_lock, un_lock, lock
from common.utils.logger import maxkb_logger from common.utils.logger import maxkb_logger
from knowledge.models import File from knowledge.models import File
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
def clean_chat_log_job(): def clean_chat_log_job():
clean_chat_log_job_lock() clean_chat_log_job_lock()
@ -76,7 +72,8 @@ def clean_chat_log_job_lock():
def run(): def run():
if try_lock('clean_chat_log_job', 30 * 30): if try_lock('clean_chat_log_job', 30 * 30):
try: try:
scheduler.start() maxkb_logger.info('get lock clean_chat_log_job')
existing_job = scheduler.get_job(job_id='clean_chat_log') existing_job = scheduler.get_job(job_id='clean_chat_log')
if existing_job is not None: if existing_job is not None:
existing_job.remove() existing_job.remove()

View File

@ -1,19 +1,14 @@
# coding=utf-8 # coding=utf-8
import time
from datetime import timedelta from datetime import timedelta
from apscheduler.schedulers.background import BackgroundScheduler
from django.db.models import Q from django.db.models import Q
from django.utils import timezone from django.utils import timezone
from django_apscheduler.jobstores import DjangoJobStore
from common.job.scheduler import scheduler
from common.utils.lock import un_lock, try_lock, lock from common.utils.lock import un_lock, try_lock, lock
from common.utils.logger import maxkb_logger from common.utils.logger import maxkb_logger
from knowledge.models import File, FileSourceType from knowledge.models import File, FileSourceType
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
def clean_debug_file(): def clean_debug_file():
clean_debug_file_lock() clean_debug_file_lock()
@ -22,7 +17,7 @@ def clean_debug_file():
@lock(lock_key='clean_debug_file_execute', timeout=30) @lock(lock_key='clean_debug_file_execute', timeout=30)
def clean_debug_file_lock(): def clean_debug_file_lock():
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
maxkb_logger.debug(_('start clean debug file')) maxkb_logger.info(_('start clean debug file'))
minutes_30_ago = timezone.now() - timedelta(minutes=30) minutes_30_ago = timezone.now() - timedelta(minutes=30)
two_hours_ago = timezone.now() - timedelta(hours=2) two_hours_ago = timezone.now() - timedelta(hours=2)
one_days_ago = timezone.now() - timedelta(hours=24) one_days_ago = timezone.now() - timedelta(hours=24)
@ -31,17 +26,18 @@ def clean_debug_file_lock():
Q(create_time__lt=one_days_ago, source_type=FileSourceType.TEMPORARY_1_DAY.value) | Q(create_time__lt=one_days_ago, source_type=FileSourceType.TEMPORARY_1_DAY.value) |
Q(create_time__lt=two_hours_ago, source_type=FileSourceType.TEMPORARY_120_MINUTE.value) | Q(create_time__lt=two_hours_ago, source_type=FileSourceType.TEMPORARY_120_MINUTE.value) |
Q(create_time__lt=minutes_30_ago, source_type=FileSourceType.TEMPORARY_30_MINUTE.value)).delete() Q(create_time__lt=minutes_30_ago, source_type=FileSourceType.TEMPORARY_30_MINUTE.value)).delete()
maxkb_logger.debug(_('end clean debug file')) maxkb_logger.info(_('end clean debug file'))
time.sleep(2) # time.sleep(2)
def run(): def run():
if try_lock('clean_debug_file', 30 * 30): if try_lock('clean_debug_file', 30 * 30):
try: try:
scheduler.start() maxkb_logger.info('get lock clean_debug_file')
clean_debug_file_job = scheduler.get_job(job_id='clean_debug_file') clean_debug_file_job = scheduler.get_job(job_id='clean_debug_file')
if clean_debug_file_job is not None: if clean_debug_file_job is not None:
clean_debug_file_job.remove() clean_debug_file_job.remove()
scheduler.add_job(clean_debug_file, 'cron', hour='*', minute='*/30', second='0', id='clean_debug_file') scheduler.add_job(clean_debug_file, 'cron', hour='*', minute='*/1', second='0', id='clean_debug_file')
finally: finally:
un_lock('clean_debug_file') un_lock('clean_debug_file')

View File

@ -7,17 +7,13 @@
@desc: @desc:
""" """
from apscheduler.schedulers.background import BackgroundScheduler
from django.db.models import QuerySet from django.db.models import QuerySet
from django_apscheduler.jobstores import DjangoJobStore
from application.models import ApplicationChatUserStats from application.models import ApplicationChatUserStats
from common.job.scheduler import scheduler
from common.utils.lock import try_lock, un_lock, lock from common.utils.lock import try_lock, un_lock, lock
from common.utils.logger import maxkb_logger from common.utils.logger import maxkb_logger
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
def client_access_num_reset_job(): def client_access_num_reset_job():
client_access_num_reset_job_lock() client_access_num_reset_job_lock()
@ -34,7 +30,8 @@ def client_access_num_reset_job_lock():
def run(): def run():
if try_lock('access_num_reset', 30 * 30): if try_lock('access_num_reset', 30 * 30):
try: try:
scheduler.start() maxkb_logger.info('get lock access_num_reset')
access_num_reset = scheduler.get_job(job_id='access_num_reset') access_num_reset = scheduler.get_job(job_id='access_num_reset')
if access_num_reset is not None: if access_num_reset is not None:
access_num_reset.remove() access_num_reset.remove()

View File

@ -0,0 +1,12 @@
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
try:
scheduler.start()
except Exception as e:
from common.utils.logger import maxkb_logger
maxkb_logger.error(f"Failed to start scheduler: {e}")