diff --git a/bench/config/supervisor.py b/bench/config/supervisor.py index 8c036624..cfbaebbd 100644 --- a/bench/config/supervisor.py +++ b/bench/config/supervisor.py @@ -42,6 +42,7 @@ def generate_supervisor_config(bench_path, user=None, yes=False, skip_redis=Fals "background_workers": config.get('background_workers') or 1, "bench_cmd": which('bench'), "skip_redis": skip_redis, + "workers": config.get("workers", {}), }) conf_path = os.path.join(bench_path, 'config', 'supervisor.conf') diff --git a/bench/config/templates/supervisor.conf b/bench/config/templates/supervisor.conf index d24b1cb6..085cc2cf 100644 --- a/bench/config/templates/supervisor.conf +++ b/bench/config/templates/supervisor.conf @@ -65,6 +65,22 @@ killasgroup=true numprocs={{ background_workers }} process_name=%(program_name)s-%(process_num)d +{% for worker_name, worker_details in workers.items() %} +[program:{{ bench_name }}-frappe-{{ worker_name }}-worker] +command={{ bench_cmd }} worker --queue {{ worker_name }} +priority=4 +autostart=true +autorestart=true +stdout_logfile={{ bench_dir }}/logs/worker.log +stderr_logfile={{ bench_dir }}/logs/worker.error.log +user={{ user }} +stopwaitsecs={{ worker_details["timeout"] }} +directory={{ bench_dir }} +killasgroup=true +numprocs={{ worker_details["background_workers"] or background_workers }} +process_name=%(program_name)s-%(process_num)d +{% endfor %} + {% else %} [program:{{ bench_name }}-frappe-workerbeat] command={{ bench_dir }}/env/bin/python -m frappe.celery_app beat -s beat.schedule