mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
refactor: reorganize post handler and introduce post scheduler handler
This commit is contained in:
parent
18c0be36a6
commit
1df333bffc
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from .celery_default import *
|
||||
from .gunicorn import *
|
||||
from .local_model import *
|
||||
from .local_model import *
|
||||
from .scheduler import *
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -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)
|
||||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue