mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
refactor: centralize scheduler initialization and improve logging in job files
This commit is contained in:
parent
2b89fc05d1
commit
b1144d5ee9
|
|
@ -2,20 +2,16 @@
|
|||
|
||||
import datetime
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from django.db import transaction
|
||||
from django.db.models import Q, Max
|
||||
from django.utils import timezone
|
||||
from django_apscheduler.jobstores import DjangoJobStore
|
||||
|
||||
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.logger import maxkb_logger
|
||||
from knowledge.models import File
|
||||
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_jobstore(DjangoJobStore(), "default")
|
||||
|
||||
|
||||
def clean_chat_log_job():
|
||||
clean_chat_log_job_lock()
|
||||
|
|
@ -76,7 +72,8 @@ def clean_chat_log_job_lock():
|
|||
def run():
|
||||
if try_lock('clean_chat_log_job', 30 * 30):
|
||||
try:
|
||||
scheduler.start()
|
||||
maxkb_logger.info('get lock clean_chat_log_job')
|
||||
|
||||
existing_job = scheduler.get_job(job_id='clean_chat_log')
|
||||
if existing_job is not None:
|
||||
existing_job.remove()
|
||||
|
|
|
|||
|
|
@ -1,19 +1,14 @@
|
|||
# coding=utf-8
|
||||
import time
|
||||
from datetime import timedelta
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from django.db.models import Q
|
||||
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.logger import maxkb_logger
|
||||
from knowledge.models import File, FileSourceType
|
||||
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_jobstore(DjangoJobStore(), "default")
|
||||
|
||||
|
||||
def clean_debug_file():
|
||||
clean_debug_file_lock()
|
||||
|
|
@ -22,7 +17,7 @@ def clean_debug_file():
|
|||
@lock(lock_key='clean_debug_file_execute', timeout=30)
|
||||
def clean_debug_file_lock():
|
||||
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)
|
||||
two_hours_ago = timezone.now() - timedelta(hours=2)
|
||||
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=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()
|
||||
maxkb_logger.debug(_('end clean debug file'))
|
||||
time.sleep(2)
|
||||
maxkb_logger.info(_('end clean debug file'))
|
||||
# time.sleep(2)
|
||||
|
||||
|
||||
def run():
|
||||
if try_lock('clean_debug_file', 30 * 30):
|
||||
try:
|
||||
scheduler.start()
|
||||
maxkb_logger.info('get lock clean_debug_file')
|
||||
|
||||
clean_debug_file_job = scheduler.get_job(job_id='clean_debug_file')
|
||||
if clean_debug_file_job is not None:
|
||||
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:
|
||||
un_lock('clean_debug_file')
|
||||
|
|
|
|||
|
|
@ -7,17 +7,13 @@
|
|||
@desc:
|
||||
"""
|
||||
|
||||
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.job.scheduler import scheduler
|
||||
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()
|
||||
|
|
@ -34,7 +30,8 @@ def client_access_num_reset_job_lock():
|
|||
def run():
|
||||
if try_lock('access_num_reset', 30 * 30):
|
||||
try:
|
||||
scheduler.start()
|
||||
maxkb_logger.info('get lock access_num_reset')
|
||||
|
||||
access_num_reset = scheduler.get_job(job_id='access_num_reset')
|
||||
if access_num_reset is not None:
|
||||
access_num_reset.remove()
|
||||
|
|
|
|||
|
|
@ -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}")
|
||||
Loading…
Reference in New Issue