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'
|
gunicorn = 'gunicorn', 'gunicorn'
|
||||||
celery_default = 'celery_default', 'celery_default'
|
celery_default = 'celery_default', 'celery_default'
|
||||||
local_model = 'local_model', 'local_model'
|
local_model = 'local_model', 'local_model'
|
||||||
|
scheduler = 'scheduler', 'scheduler'
|
||||||
web = 'web', 'web'
|
web = 'web', 'web'
|
||||||
celery = 'celery', 'celery'
|
celery = 'celery', 'celery'
|
||||||
celery_model = 'celery_model', 'celery_model'
|
celery_model = 'celery_model', 'celery_model'
|
||||||
@ -24,7 +25,8 @@ class Services(TextChoices):
|
|||||||
services_map = {
|
services_map = {
|
||||||
cls.gunicorn.value: services.GunicornService,
|
cls.gunicorn.value: services.GunicornService,
|
||||||
cls.celery_default: services.CeleryDefaultService,
|
cls.celery_default: services.CeleryDefaultService,
|
||||||
cls.local_model: services.GunicornLocalModelService
|
cls.local_model: services.GunicornLocalModelService,
|
||||||
|
cls.scheduler: services.SchedulerService,
|
||||||
}
|
}
|
||||||
return services_map.get(name)
|
return services_map.get(name)
|
||||||
|
|
||||||
@ -40,9 +42,13 @@ class Services(TextChoices):
|
|||||||
def task_services(cls):
|
def task_services(cls):
|
||||||
return cls.celery_services()
|
return cls.celery_services()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def scheduler_services(cls):
|
||||||
|
return [cls.scheduler]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def all_services(cls):
|
def all_services(cls):
|
||||||
return cls.web_services() + cls.task_services()
|
return cls.web_services() + cls.task_services() + cls.scheduler_services()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def export_services_values(cls):
|
def export_services_values(cls):
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
from .celery_default import *
|
from .celery_default import *
|
||||||
from .gunicorn 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 .base import BaseService
|
||||||
from ..hands import *
|
from ..hands import *
|
||||||
|
|
||||||
@ -37,15 +35,3 @@ class GunicornService(BaseService):
|
|||||||
@property
|
@property
|
||||||
def cwd(self):
|
def cwd(self):
|
||||||
return APPS_DIR
|
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():
|
def post_handler():
|
||||||
from common.database_model_manage.database_model_manage import DatabaseModelManage
|
from common.database_model_manage.database_model_manage import DatabaseModelManage
|
||||||
from common import job
|
|
||||||
from common import event
|
from common import event
|
||||||
|
|
||||||
event.run()
|
event.run()
|
||||||
job.run()
|
|
||||||
DatabaseModelManage.init()
|
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':
|
if os.environ.get('ENABLE_SCHEDULER') == '1':
|
||||||
post_handler()
|
post_scheduler_handler()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user