[supervisord] nodaemon=true [program:server] command=gunicorn core.wsgi:application --bind 0.0.0.0:8000 directory=/opt/app autostart=true autorestart=true ; Unified log file stdout_logfile=/opt/logs/server.log stderr_logfile=/opt/logs/server.log redirect_stderr=true ; Rotate when file reaches max size stdout_logfile_maxbytes=20MB stdout_logfile_backups=1 [program:beat] command=celery -A core beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler --logfile=/opt/logs/beat.log directory=/opt/app autostart=true autorestart=true ; Unified log file stdout_logfile=/opt/logs/beat.log stderr_logfile=/opt/logs/beat.log redirect_stderr=true ; Rotate when file reaches max size stdout_logfile_maxbytes=20MB stdout_logfile_backups=1 [program:worker_default] command=celery -A core worker -l info --logfile=/opt/logs/worker_default.log --concurrency=1 -Q default -n default directory=/opt/app autostart=true autorestart=true ; Unified log file stdout_logfile=/opt/logs/worker_default.log stderr_logfile=/opt/logs/worker_default.log redirect_stderr=true ; Rotate when file reaches max size stdout_logfile_maxbytes=20MB stdout_logfile_backups=1 [program:worker_low] command=celery -A core worker -l info --logfile=/opt/logs/worker_low.log --concurrency=1 -Q low -n low directory=/opt/app autostart=true autorestart=true ; Unified log file stdout_logfile=/opt/logs/worker_low.log stderr_logfile=/opt/logs/worker_low.log redirect_stderr=true ; Rotate when file reaches max size stdout_logfile_maxbytes=20MB stdout_logfile_backups=1