From b13773d806894c4ff21d618aa0b7cced813b10e1 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Mon, 16 Apr 2018 19:49:44 +0530 Subject: [PATCH] initialize number of processes from template --- bench/config/systemd.py | 31 +++++++++++-------- ...frappe-bench-frappe-default-worker.service | 2 +- .../frappe-bench-frappe-long-worker.service | 2 +- .../frappe-bench-frappe-short-worker.service | 2 +- .../systemd/frappe-bench-workers.target | 2 +- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/bench/config/systemd.py b/bench/config/systemd.py index bc343dfd..856d1083 100644 --- a/bench/config/systemd.py +++ b/bench/config/systemd.py @@ -29,6 +29,17 @@ def generate_systemd_config(bench_path, user=None, yes=False, _delete_symlinks(bench_path) return + number_of_workers = config.get('background_workers') or 1 + background_workers = [] + for i in range(number_of_workers): + background_workers.append(get_bench_name(bench_path) + "-frappe-default-worker@" + str(i+1) + ".service") + + for i in range(number_of_workers): + background_workers.append(get_bench_name(bench_path) + "-frappe-short-worker@" + str(i+1) + ".service") + + for i in range(number_of_workers): + background_workers.append(get_bench_name(bench_path) + "-frappe-long-worker@" + str(i+1) + ".service") + bench_info = { "bench_dir": bench_dir, "sites_dir": os.path.join(bench_dir, 'sites'), @@ -44,7 +55,7 @@ def generate_systemd_config(bench_path, user=None, yes=False, "webserver_port": config.get('webserver_port', 8000), "gunicorn_workers": config.get('gunicorn_workers', get_gunicorn_workers()["gunicorn_workers"]), "bench_name": get_bench_name(bench_path), - "background_workers": config.get('background_workers') or 1, + "worker_target_wants": " ".join(background_workers), "bench_cmd": find_executable('bench') } @@ -88,9 +99,9 @@ def setup_workers_config(bench_info, bench_path): bench_schedule_worker_config = bench_schedule_worker_template.render(**bench_info) bench_workers_target_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-workers.target') - bench_default_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-default-worker.service') - bench_short_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-short-worker.service') - bench_long_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-long-worker.service') + bench_default_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-default-worker@.service') + bench_short_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-short-worker@.service') + bench_long_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-long-worker@.service') bench_schedule_worker_config_path = os.path.join(bench_path, 'config', 'systemd' , bench_info.get("bench_name") + '-frappe-schedule.service') with open(bench_workers_target_config_path, 'w') as f: @@ -167,9 +178,6 @@ def _create_symlinks(bench_path): unit_files = get_unit_files(bench_dir) for unit_file in unit_files: filename = "".join(unit_file) - # if '-worker' in unit_file[0] and unit_file[1] == '.service': - # unit_file.insert(1, '@') - exec_cmd('sudo ln -s {config_path}/{unit_file} {etc_systemd_system}/{unit_file_init}'.format( config_path=config_path, etc_systemd_system=etc_systemd_system, @@ -184,9 +192,6 @@ def _delete_symlinks(bench_path): config_path = os.path.join(bench_dir, 'config', 'systemd') unit_files = get_unit_files(bench_dir) for unit_file in unit_files: - # if '-worker' in unit_file[0] and unit_file[1] == '.service': - # unit_file.insert(1, '@') - exec_cmd('sudo rm {etc_systemd_system}/{unit_file_init}'.format( config_path=config_path, etc_systemd_system=etc_systemd_system, @@ -201,9 +206,9 @@ def get_unit_files(bench_path): [bench_name+"-workers", ".target"], [bench_name+"-web", ".target"], [bench_name+"-redis", ".target"], - [bench_name+"-frappe-default-worker", ".service"], - [bench_name+"-frappe-short-worker", ".service"], - [bench_name+"-frappe-long-worker", ".service"], + [bench_name+"-frappe-default-worker@", ".service"], + [bench_name+"-frappe-short-worker@", ".service"], + [bench_name+"-frappe-long-worker@", ".service"], [bench_name+"-frappe-schedule", ".service"], [bench_name+"-frappe-web", ".service"], [bench_name+"-node-socketio", ".service"], diff --git a/bench/config/templates/systemd/frappe-bench-frappe-default-worker.service b/bench/config/templates/systemd/frappe-bench-frappe-default-worker.service index d02bc4a4..a666313c 100644 --- a/bench/config/templates/systemd/frappe-bench-frappe-default-worker.service +++ b/bench/config/templates/systemd/frappe-bench-frappe-default-worker.service @@ -1,5 +1,5 @@ [Unit] -Description="{{ bench_name }}-frappe-default-worker" +Description="{{ bench_name }}-frappe-default-worker %I" PartOf={{ bench_name }}-workers.target [Service] diff --git a/bench/config/templates/systemd/frappe-bench-frappe-long-worker.service b/bench/config/templates/systemd/frappe-bench-frappe-long-worker.service index 35489739..fe81fa1b 100644 --- a/bench/config/templates/systemd/frappe-bench-frappe-long-worker.service +++ b/bench/config/templates/systemd/frappe-bench-frappe-long-worker.service @@ -1,5 +1,5 @@ [Unit] -Description="{{ bench_name }}-frappe-short-worker" +Description="{{ bench_name }}-frappe-short-worker %I" PartOf={{ bench_name }}-workers.target [Service] diff --git a/bench/config/templates/systemd/frappe-bench-frappe-short-worker.service b/bench/config/templates/systemd/frappe-bench-frappe-short-worker.service index 79d266fe..f27e2f6b 100644 --- a/bench/config/templates/systemd/frappe-bench-frappe-short-worker.service +++ b/bench/config/templates/systemd/frappe-bench-frappe-short-worker.service @@ -1,5 +1,5 @@ [Unit] -Description="{{ bench_name }}-frappe-short-worker" +Description="{{ bench_name }}-frappe-short-worker %I" PartOf={{ bench_name }}-workers.target [Service] diff --git a/bench/config/templates/systemd/frappe-bench-workers.target b/bench/config/templates/systemd/frappe-bench-workers.target index 336521ff..270bf200 100644 --- a/bench/config/templates/systemd/frappe-bench-workers.target +++ b/bench/config/templates/systemd/frappe-bench-workers.target @@ -1,6 +1,6 @@ [Unit] After=network.target -Wants={{ bench_name }}-frappe-default-worker.service {{ bench_name }}-frappe-short-worker.service {{ bench_name }}-frappe-long-worker.service {{ bench_name }}-frappe-schedule.service +Wants={{ worker_target_wants }} [Install] WantedBy=multi-user.target