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, '--preload', '-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)