parent
9f11f4c426
commit
427ae69f22
7 changed files with 98 additions and 6 deletions
@ -0,0 +1,60 @@ |
||||
from django.core.management.base import BaseCommand, CommandError |
||||
import os |
||||
import shutil |
||||
from django.conf import settings |
||||
|
||||
|
||||
class Command(BaseCommand): |
||||
help = 'Сздаёт супервисор конфиги для селери' |
||||
|
||||
def add_arguments(self, parser): |
||||
parser.add_argument( |
||||
'--user', |
||||
type=str, |
||||
default='www', |
||||
dest='user', |
||||
help='Пользователь от имени которого будут запускаться процессы супервизора' |
||||
) |
||||
parser.add_argument( |
||||
'--env', |
||||
type=str, |
||||
default='dev', |
||||
dest='env', |
||||
help='Тип кружения из пд которого запускается скрипт (env, dev, test)' |
||||
) |
||||
parser.add_argument( |
||||
'--celery-path', |
||||
type=str, |
||||
dest='celery_path', |
||||
help='Путь до celery' |
||||
) |
||||
|
||||
def handle(self, *args, **options): |
||||
with open(settings.BASE_DIR + '/config_app/supervisor_configs/build.conf') as file_in: |
||||
text = file_in.read() |
||||
|
||||
text = text.replace("$CELERY_PATH$", options['celery_path']) |
||||
text = text.replace("$USER$", options['user']) |
||||
text = text.replace("$PROJECT_PATH$", settings.BASE_DIR) |
||||
|
||||
if options['env'] == 'dev': |
||||
text = text.replace("$LOG_LEVEL$", 'info') |
||||
try: |
||||
shutil.rmtree(settings.BASE_DIR + '/config_app/supervisor_configs/dist') |
||||
except FileNotFoundError: |
||||
pass |
||||
|
||||
os.mkdir(settings.BASE_DIR + '/config_app/supervisor_configs/dist') |
||||
for name in ['beat', 'worker', 'flower']: |
||||
out_text = text.replace("$NAME$", name) |
||||
out_file_path = '%s/config_app/supervisor_configs/dist/%s.conf' % (settings.BASE_DIR, name) |
||||
with open(out_file_path, 'w') as file_out: |
||||
file_out.write(out_text) |
||||
|
||||
try: |
||||
os.symlink(out_file_path, '/etc/supervisor/conf.d/%s.conf' % name) |
||||
except FileExistsError: |
||||
pass |
||||
|
||||
else: |
||||
raise CommandError('No such environ %s use one of (dev, prod, test)' % poll_id) |
||||
@ -0,0 +1,7 @@ |
||||
[program:$NAME$] |
||||
command=$CELERY_PATH$ -A lms $NAME$ -l=$LOG_LEVEL$ |
||||
directory=$PROJECT_PATH$ |
||||
user=$USER$ |
||||
stdout_logfile=$PROJECT_PATH$/logs/$NAME$.log |
||||
autorestart=true |
||||
redirect_stderr=true |
||||
@ -0,0 +1,7 @@ |
||||
[program:beat] |
||||
command=/www/servers/python-server/bin/celery -A lms beat -l=info |
||||
directory=/www/servers/python-server/go.skillbox.ru |
||||
user=skillbox |
||||
stdout_logfile=/www/servers/python-server/go.skillbox.ru/logs/beat.log |
||||
autorestart=true |
||||
redirect_stderr=true |
||||
@ -0,0 +1,7 @@ |
||||
[program:flower] |
||||
command=/www/servers/python-server/bin/celery -A lms flower -l=info |
||||
directory=/www/servers/python-server/go.skillbox.ru |
||||
user=skillbox |
||||
stdout_logfile=/www/servers/python-server/go.skillbox.ru/logs/flower.log |
||||
autorestart=true |
||||
redirect_stderr=true |
||||
@ -0,0 +1,7 @@ |
||||
[program:worker] |
||||
command=/www/servers/python-server/bin/celery -A lms worker -l=info |
||||
directory=/www/servers/python-server/go.skillbox.ru |
||||
user=skillbox |
||||
stdout_logfile=/www/servers/python-server/go.skillbox.ru/logs/worker.log |
||||
autorestart=true |
||||
redirect_stderr=true |
||||
@ -1,7 +1,7 @@ |
||||
[program:schedule] |
||||
command=/home/andrey/skillbox/bin/celery -A lms beat -l=info |
||||
directory=/home/andrey/skillbox/go.skillbox.ru |
||||
user=andrey |
||||
command=celery -A lms beat -l=info |
||||
directory=/www/servers/python-server/go.skillbox.ru |
||||
user=www |
||||
stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/schedule.log |
||||
autorestart=true |
||||
redirect_stderr=true |
||||
redirect_stderr=true |
||||
|
||||
Loading…
Reference in new issue