bench/bench/config/templates/supervisor.conf
2025-04-07 01:33:45 +08:00

152 lines
5.0 KiB
Plaintext

; Notes:
; priority=1 --> Lower priorities indicate programs that start first and shut down last
; killasgroup=true --> send kill signal to child processes too
; graceful timeout should always be lower than stopwaitsecs to avoid orphan gunicorn workers.
[program:{{ bench_name }}-jingrow-web]
command={{ bench_dir }}/env/bin/gunicorn -b 127.0.0.1:{{ webserver_port }} -w {{ gunicorn_workers }} --max-requests {{ gunicorn_max_requests }} --max-requests-jitter {{ gunicorn_max_requests_jitter }} -t {{ http_timeout }} --graceful-timeout 30 jingrow.app:application --preload
priority=4
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/web.log
stderr_logfile={{ bench_dir }}/logs/web.error.log
stopwaitsecs=40
killasgroup=true
user={{ user }}
directory={{ sites_dir }}
startretries={{ supervisor_startretries }}
[program:{{ bench_name }}-jingrow-schedule]
command={{ bench_cmd }} schedule
priority=3
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/schedule.log
stderr_logfile={{ bench_dir }}/logs/schedule.error.log
user={{ user }}
directory={{ bench_dir }}
startretries={{ supervisor_startretries }}
{% if not multi_queue_consumption %}
[program:{{ bench_name }}-jingrow-default-worker]
command={{ bench_cmd }} worker --queue default
priority=4
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/worker.log
stderr_logfile={{ bench_dir }}/logs/worker.error.log
user={{ user }}
stopwaitsecs=1560
directory={{ bench_dir }}
killasgroup=true
numprocs={{ background_workers }}
process_name=%(program_name)s-%(process_num)d
startretries={{ supervisor_startretries }}
{% endif %}
[program:{{ bench_name }}-jingrow-short-worker]
command={{ bench_cmd }} worker --queue short{{',default' if multi_queue_consumption else ''}}
priority=4
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/worker.log
stderr_logfile={{ bench_dir }}/logs/worker.error.log
user={{ user }}
stopwaitsecs=360
directory={{ bench_dir }}
killasgroup=true
numprocs={{ background_workers }}
process_name=%(program_name)s-%(process_num)d
startretries={{ supervisor_startretries }}
[program:{{ bench_name }}-jingrow-long-worker]
command={{ bench_cmd }} worker --queue long{{',default,short' if multi_queue_consumption else ''}}
priority=4
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/worker.log
stderr_logfile={{ bench_dir }}/logs/worker.error.log
user={{ user }}
stopwaitsecs=1560
directory={{ bench_dir }}
killasgroup=true
numprocs={{ background_workers }}
process_name=%(program_name)s-%(process_num)d
startretries={{ supervisor_startretries }}
{% for worker_name, worker_details in workers.items() %}
[program:{{ bench_name }}-jingrow-{{ 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
startretries={{ supervisor_startretries }}
{% endfor %}
{% if not skip_redis %}
[program:{{ bench_name }}-redis-cache]
command={{ redis_server }} {{ redis_cache_config }}
priority=1
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/redis-cache.log
stderr_logfile={{ bench_dir }}/logs/redis-cache.error.log
user={{ user }}
directory={{ sites_dir }}
startretries={{ supervisor_startretries }}
[program:{{ bench_name }}-redis-queue]
command={{ redis_server }} {{ redis_queue_config }}
priority=1
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/redis-queue.log
stderr_logfile={{ bench_dir }}/logs/redis-queue.error.log
user={{ user }}
directory={{ sites_dir }}
startretries={{ supervisor_startretries }}
{% endif %}
{% if node %}
[program:{{ bench_name }}-node-socketio]
command={{ node }} {{ bench_dir }}/apps/jingrow/socketio.js
priority=4
autostart=true
autorestart=true
stdout_logfile={{ bench_dir }}/logs/node-socketio.log
stderr_logfile={{ bench_dir }}/logs/node-socketio.error.log
user={{ user }}
directory={{ bench_dir }}
startretries={{ supervisor_startretries }}
{% endif %}
[group:{{ bench_name }}-web]
programs={{ bench_name }}-jingrow-web {%- if node -%} ,{{ bench_name }}-node-socketio {%- endif%}
{% if multi_queue_consumption %}
[group:{{ bench_name }}-workers]
programs={{ bench_name }}-jingrow-schedule,{{ bench_name }}-jingrow-short-worker,{{ bench_name }}-jingrow-long-worker{%- for worker_name in workers -%},{{ bench_name }}-jingrow-{{ worker_name }}-worker{%- endfor %}
{% else %}
[group:{{ bench_name }}-workers]
programs={{ bench_name }}-jingrow-schedule,{{ bench_name }}-jingrow-default-worker,{{ bench_name }}-jingrow-short-worker,{{ bench_name }}-jingrow-long-worker{%- for worker_name in workers -%},{{ bench_name }}-jingrow-{{ worker_name }}-worker{%- endfor %}
{% endif %}
{% if not skip_redis %}
[group:{{ bench_name }}-redis]
programs={{ bench_name }}-redis-cache,{{ bench_name }}-redis-queue
{% endif %}