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
|
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()
|
||||||
|
|||||||
@ -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')
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
12
apps/common/job/scheduler.py
Normal file
12
apps/common/job/scheduler.py
Normal 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}")
|
||||||
Loading…
Reference in New Issue
Block a user