Skip to content

Commit 1df333b

Browse files
committed
refactor: reorganize post handler and introduce post scheduler handler
1 parent 18c0be3 commit 1df333b

File tree

5 files changed

+71
-22
lines changed

5 files changed

+71
-22
lines changed

apps/common/management/commands/services/command.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class Services(TextChoices):
1212
gunicorn = 'gunicorn', 'gunicorn'
1313
celery_default = 'celery_default', 'celery_default'
1414
local_model = 'local_model', 'local_model'
15+
scheduler = 'scheduler', 'scheduler'
1516
web = 'web', 'web'
1617
celery = 'celery', 'celery'
1718
celery_model = 'celery_model', 'celery_model'
@@ -24,7 +25,8 @@ def get_service_object_class(cls, name):
2425
services_map = {
2526
cls.gunicorn.value: services.GunicornService,
2627
cls.celery_default: services.CeleryDefaultService,
27-
cls.local_model: services.GunicornLocalModelService
28+
cls.local_model: services.GunicornLocalModelService,
29+
cls.scheduler: services.SchedulerService,
2830
}
2931
return services_map.get(name)
3032

@@ -40,9 +42,13 @@ def celery_services(cls):
4042
def task_services(cls):
4143
return cls.celery_services()
4244

45+
@classmethod
46+
def scheduler_services(cls):
47+
return [cls.scheduler]
48+
4349
@classmethod
4450
def all_services(cls):
45-
return cls.web_services() + cls.task_services()
51+
return cls.web_services() + cls.task_services() + cls.scheduler_services()
4652

4753
@classmethod
4854
def export_services_values(cls):
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from .celery_default import *
22
from .gunicorn import *
3-
from .local_model import *
3+
from .local_model import *
4+
from .scheduler import *

apps/common/management/commands/services/services/gunicorn.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import subprocess
2-
31
from .base import BaseService
42
from ..hands import *
53

@@ -37,15 +35,3 @@ def cmd(self):
3735
@property
3836
def cwd(self):
3937
return APPS_DIR
40-
41-
def open_subprocess(self):
42-
# 复制当前环境变量,并设置 ENABLE_SCHEDULER=1
43-
env = os.environ.copy()
44-
env['ENABLE_SCHEDULER'] = '1'
45-
kwargs = {
46-
'cwd': self.cwd,
47-
'stderr': self.log_file,
48-
'stdout': self.log_file,
49-
'env': env
50-
}
51-
self._process = subprocess.Popen(self.cmd, **kwargs)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import subprocess
2+
3+
from .base import BaseService
4+
from ..hands import *
5+
6+
__all__ = ['SchedulerService']
7+
8+
9+
class SchedulerService(BaseService):
10+
11+
def __init__(self, **kwargs):
12+
self.worker = 1
13+
super().__init__(**kwargs)
14+
15+
@property
16+
def cmd(self):
17+
print("\n- Start Scheduler Server")
18+
19+
log_format = '%(h)s %(t)s %(L)ss "%(r)s" %(s)s %(b)s '
20+
bind = f'127.0.0.1:6060'
21+
cmd = [
22+
'gunicorn', 'maxkb.wsgi:application',
23+
'-b', bind,
24+
'-k', 'gthread',
25+
'--threads', '200',
26+
'-w', str(self.worker),
27+
'--max-requests', '10240',
28+
'--max-requests-jitter', '2048',
29+
'--access-logformat', log_format,
30+
'--access-logfile', '/dev/null',
31+
'--error-logfile', '-'
32+
]
33+
if DEBUG:
34+
cmd.append('--reload')
35+
return cmd
36+
37+
@property
38+
def cwd(self):
39+
return APPS_DIR
40+
41+
def open_subprocess(self):
42+
# 复制当前环境变量,并设置 ENABLE_SCHEDULER=1
43+
env = os.environ.copy()
44+
env['ENABLE_SCHEDULER'] = '1'
45+
kwargs = {
46+
'cwd': self.cwd,
47+
'stderr': self.log_file,
48+
'stdout': self.log_file,
49+
'env': env
50+
}
51+
self._process = subprocess.Popen(self.cmd, **kwargs)

apps/maxkb/wsgi.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,20 @@
1919

2020
def post_handler():
2121
from common.database_model_manage.database_model_manage import DatabaseModelManage
22-
from common import job
2322
from common import event
2423

2524
event.run()
26-
job.run()
2725
DatabaseModelManage.init()
2826

29-
# 仅在web中启动定时任务,local_model celery 不需要
30-
if os.environ.get('ENABLE_SCHEDULER') == '1':
31-
post_handler()
3227

28+
def post_scheduler_handler():
29+
from common import job
30+
31+
job.run()
32+
33+
# 启动后处理函数
34+
post_handler()
3335

36+
# 仅在scheduler中启动定时任务,dev local_model celery 不需要
37+
if os.environ.get('ENABLE_SCHEDULER') == '1':
38+
post_scheduler_handler()

0 commit comments

Comments
 (0)