refactor: reorganize post handler and introduce post scheduler handler

This commit is contained in:
CaptainB 2025-07-21 15:44:54 +08:00
parent 18c0be36a6
commit 1df333bffc
5 changed files with 72 additions and 23 deletions

View File

@ -12,6 +12,7 @@ class Services(TextChoices):
gunicorn = 'gunicorn', 'gunicorn'
celery_default = 'celery_default', 'celery_default'
local_model = 'local_model', 'local_model'
scheduler = 'scheduler', 'scheduler'
web = 'web', 'web'
celery = 'celery', 'celery'
celery_model = 'celery_model', 'celery_model'
@ -24,7 +25,8 @@ class Services(TextChoices):
services_map = {
cls.gunicorn.value: services.GunicornService,
cls.celery_default: services.CeleryDefaultService,
cls.local_model: services.GunicornLocalModelService
cls.local_model: services.GunicornLocalModelService,
cls.scheduler: services.SchedulerService,
}
return services_map.get(name)
@ -40,9 +42,13 @@ class Services(TextChoices):
def task_services(cls):
return cls.celery_services()
@classmethod
def scheduler_services(cls):
return [cls.scheduler]
@classmethod
def all_services(cls):
return cls.web_services() + cls.task_services()
return cls.web_services() + cls.task_services() + cls.scheduler_services()
@classmethod
def export_services_values(cls):

View File

@ -1,3 +1,4 @@
from .celery_default import *
from .gunicorn import *
from .local_model import *
from .local_model import *
from .scheduler import *

View File

@ -1,5 +1,3 @@
import subprocess
from .base import BaseService
from ..hands import *
@ -37,15 +35,3 @@ class GunicornService(BaseService):
@property
def cwd(self):
return APPS_DIR
def open_subprocess(self):
# 复制当前环境变量,并设置 ENABLE_SCHEDULER=1
env = os.environ.copy()
env['ENABLE_SCHEDULER'] = '1'
kwargs = {
'cwd': self.cwd,
'stderr': self.log_file,
'stdout': self.log_file,
'env': env
}
self._process = subprocess.Popen(self.cmd, **kwargs)

View File

@ -0,0 +1,51 @@
import subprocess
from .base import BaseService
from ..hands import *
__all__ = ['SchedulerService']
class SchedulerService(BaseService):
def __init__(self, **kwargs):
self.worker = 1
super().__init__(**kwargs)
@property
def cmd(self):
print("\n- Start Scheduler Server")
log_format = '%(h)s %(t)s %(L)ss "%(r)s" %(s)s %(b)s '
bind = f'127.0.0.1:6060'
cmd = [
'gunicorn', 'maxkb.wsgi:application',
'-b', bind,
'-k', 'gthread',
'--threads', '200',
'-w', str(self.worker),
'--max-requests', '10240',
'--max-requests-jitter', '2048',
'--access-logformat', log_format,
'--access-logfile', '/dev/null',
'--error-logfile', '-'
]
if DEBUG:
cmd.append('--reload')
return cmd
@property
def cwd(self):
return APPS_DIR
def open_subprocess(self):
# 复制当前环境变量,并设置 ENABLE_SCHEDULER=1
env = os.environ.copy()
env['ENABLE_SCHEDULER'] = '1'
kwargs = {
'cwd': self.cwd,
'stderr': self.log_file,
'stdout': self.log_file,
'env': env
}
self._process = subprocess.Popen(self.cmd, **kwargs)

View File

@ -19,15 +19,20 @@ application = get_wsgi_application()
def post_handler():
from common.database_model_manage.database_model_manage import DatabaseModelManage
from common import job
from common import event
event.run()
job.run()
DatabaseModelManage.init()
# 仅在web中启动定时任务local_model celery 不需要
def post_scheduler_handler():
from common import job
job.run()
# 启动后处理函数
post_handler()
# 仅在scheduler中启动定时任务dev local_model celery 不需要
if os.environ.get('ENABLE_SCHEDULER') == '1':
post_handler()
post_scheduler_handler()