diff --git a/apps/common/job/__init__.py b/apps/common/job/__init__.py new file mode 100644 index 000000000..895bf7f5d --- /dev/null +++ b/apps/common/job/__init__.py @@ -0,0 +1,13 @@ +# coding=utf-8 +""" + @project: maxkb + @Author:虎 + @file: __init__.py + @date:2024/3/14 11:54 + @desc: +""" +from .client_access_num_job import * + + +def run(): + client_access_num_job.run() diff --git a/apps/common/job/client_access_num_job.py b/apps/common/job/client_access_num_job.py new file mode 100644 index 000000000..4c03fd210 --- /dev/null +++ b/apps/common/job/client_access_num_job.py @@ -0,0 +1,33 @@ +# coding=utf-8 +""" + @project: maxkb + @Author:虎 + @file: client_access_num_job.py + @date:2024/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.api_key_model import ApplicationPublicAccessClient + +scheduler = BackgroundScheduler() +scheduler.add_jobstore(DjangoJobStore(), "default") + + +def client_access_num_reset_job(): + logging.getLogger("max_kb").info('开始重置access_num') + QuerySet(ApplicationPublicAccessClient).update(intraday_access_num=0) + logging.getLogger("max_kb").info('结束重置access_num') + + +def run(): + 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') diff --git a/apps/smartdoc/settings/base.py b/apps/smartdoc/settings/base.py index 4b22d0702..621b0135e 100644 --- a/apps/smartdoc/settings/base.py +++ b/apps/smartdoc/settings/base.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ 'rest_framework', "drf_yasg", # swagger 接口 'django_filters', # 条件过滤 + 'django_apscheduler' ] diff --git a/apps/smartdoc/wsgi.py b/apps/smartdoc/wsgi.py index df250f58e..e04ec5274 100644 --- a/apps/smartdoc/wsgi.py +++ b/apps/smartdoc/wsgi.py @@ -18,8 +18,10 @@ application = get_wsgi_application() def post_handler(): from common import event + from common import job event.run() event.ListenerManagement.init_embedding_model_signal.send() + job.run() post_handler() diff --git a/pyproject.toml b/pyproject.toml index ca72630cc..cf26ea8fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ beautifulsoup4 = "^4.12.2" html2text = "^2024.2.26" langchain-openai = "^0.0.8" django-ipware = "^6.0.4" +django-apscheduler = "^0.6.2" [build-system] requires = ["poetry-core"]