2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-10 00:37:51 +00:00

refactor: Bench restart

* Commonify reloading processes' logic
* Add functionality to restart web workers in development
* Use Bench.reload instead
This commit is contained in:
Gavin D'souza 2021-12-02 14:17:11 +05:30
parent cbf30b4e6a
commit 814bcc6320
4 changed files with 16 additions and 32 deletions

View File

@ -26,10 +26,7 @@ from bench.utils import (
) )
from bench.utils.bench import ( from bench.utils.bench import (
build_assets, build_assets,
get_env_cmd,
install_python_dev_dependencies, install_python_dev_dependencies,
restart_supervisor_processes,
restart_systemd_processes,
) )
from bench.utils.render import step from bench.utils.render import step
@ -417,10 +414,7 @@ def install_app(
build_assets(bench_path=bench_path, app=app) build_assets(bench_path=bench_path, app=app)
if restart_bench: if restart_bench:
if conf.get("restart_supervisor_on_update"): bench.reload()
restart_supervisor_processes(bench_path=bench_path)
if conf.get("restart_systemd_on_update"):
restart_systemd_processes(bench_path=bench_path)
def pull_apps(apps=None, bench_path=".", reset=False): def pull_apps(apps=None, bench_path=".", reset=False):

View File

@ -131,14 +131,18 @@ class Bench(Base, Validator):
run_frappe_cmd("build", bench_path=self.name) run_frappe_cmd("build", bench_path=self.name)
@step(title="Reloading Bench Processes", success="Bench Processes Reloaded") @step(title="Reloading Bench Processes", success="Bench Processes Reloaded")
def reload(self): def reload(self, web=False, supervisor=True, systemd=True):
"""If web is True, only web workers are restarted
"""
conf = self.conf conf = self.conf
if conf.get("restart_supervisor_on_update"):
restart_supervisor_processes(bench_path=self.name)
if conf.get("restart_systemd_on_update"):
restart_systemd_processes(bench_path=self.name)
if conf.get("developer_mode"): if conf.get("developer_mode"):
restart_process_manager(bench_path=self.name) restart_process_manager(bench_path=self.name, web_workers=web)
if supervisor and conf.get("restart_supervisor_on_update"):
restart_supervisor_processes(bench_path=self.name, web_workers=web)
if systemd and conf.get("restart_systemd_on_update"):
restart_systemd_processes(bench_path=self.name, web_workers=web)
class BenchApps(MutableSequence): class BenchApps(MutableSequence):
def __init__(self, bench: Bench): def __init__(self, bench: Bench):

View File

@ -23,14 +23,7 @@ def start(no_dev, concurrency, procfile, no_prefix, man):
@click.option('--systemd', is_flag=True, default=False) @click.option('--systemd', is_flag=True, default=False)
def restart(web, supervisor, systemd): def restart(web, supervisor, systemd):
from bench.bench import Bench from bench.bench import Bench
from bench.utils.bench import restart_supervisor_processes, restart_systemd_processes Bench(".").reload(web, supervisor, systemd)
bench = Bench(".")
if bench.conf.get('restart_supervisor_on_update') or supervisor:
restart_supervisor_processes(bench_path='.', web_workers=web)
if bench.conf.get('restart_systemd_on_update') or systemd:
restart_systemd_processes(bench_path='.', web_workers=web)
@click.command('set-nginx-port', help="Set NGINX port for site") @click.command('set-nginx-port', help="Set NGINX port for site")

View File

@ -279,12 +279,13 @@ def restart_systemd_processes(bench_path=".", web_workers=False):
) )
def restart_process_manager(bench_path="."): def restart_process_manager(bench_path=".", web_workers=False):
# only overmind has the restart feature, not sure other supported procmans do # only overmind has the restart feature, not sure other supported procmans do
if which("overmind") and os.path.exists( if which("overmind") and os.path.exists(
os.path.join(bench_path, ".overmind.sock") os.path.join(bench_path, ".overmind.sock")
): ):
exec_cmd("overmind restart", cwd=bench_path) worker = "web" if web_workers else ""
exec_cmd(f"overmind restart {worker}", cwd=bench_path)
def build_assets(bench_path=".", app=None): def build_assets(bench_path=".", app=None):
@ -352,10 +353,6 @@ def update(
from bench.utils import clear_command_cache from bench.utils import clear_command_cache
from bench.utils.app import is_version_upgrade from bench.utils.app import is_version_upgrade
from bench.utils.bench import (
restart_supervisor_processes,
restart_systemd_processes,
)
from bench.utils.system import backup_all_sites from bench.utils.system import backup_all_sites
bench_path = os.path.abspath(".") bench_path = os.path.abspath(".")
@ -414,11 +411,7 @@ def update(
apps_dir = os.path.join(bench_path, "apps") apps_dir = os.path.join(bench_path, "apps")
compile_dir(apps_dir, quiet=1, rx=re.compile(".*node_modules.*")) compile_dir(apps_dir, quiet=1, rx=re.compile(".*node_modules.*"))
if restart_supervisor or conf.get("restart_supervisor_on_update"): bench.reload(web=False, supervisor=restart_supervisor, systemd=restart_systemd)
restart_supervisor_processes(bench_path=bench_path)
if restart_systemd or conf.get("restart_systemd_on_update"):
restart_systemd_processes(bench_path=bench_path)
conf.update({"maintenance_mode": 0, "pause_scheduler": 0}) conf.update({"maintenance_mode": 0, "pause_scheduler": 0})
update_config(conf, bench_path=bench_path) update_config(conf, bench_path=bench_path)