diff --git a/config_app/management/commands/build_celery.py b/config_app/management/commands/build_celery.py new file mode 100644 index 0000000..cf4fe02 --- /dev/null +++ b/config_app/management/commands/build_celery.py @@ -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) diff --git a/config_app/management/commands/clear_log.py b/config_app/management/commands/clear_log.py index bc1cf88..07f2d29 100644 --- a/config_app/management/commands/clear_log.py +++ b/config_app/management/commands/clear_log.py @@ -18,8 +18,12 @@ class Command(BaseCommand): def handle(self, *args, **options): if options['log_name'] == '__all__': - shutil.rmtree(settings.BASE_DIR + '/logs') + try: + shutil.rmtree(settings.BASE_DIR + '/logs') + except FileNotFoundError: + pass + os.mkdir(settings.BASE_DIR + '/logs') else: - os.remove(settings.BASE_DIR + '/logs/' + options['log_name']) \ No newline at end of file + os.remove(settings.BASE_DIR + '/logs/' + options['log_name']) diff --git a/config_app/supervisor_configs/build.conf b/config_app/supervisor_configs/build.conf new file mode 100644 index 0000000..ab78bd8 --- /dev/null +++ b/config_app/supervisor_configs/build.conf @@ -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 diff --git a/config_app/supervisor_configs/dist/beat.conf b/config_app/supervisor_configs/dist/beat.conf new file mode 100644 index 0000000..33980ed --- /dev/null +++ b/config_app/supervisor_configs/dist/beat.conf @@ -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 diff --git a/config_app/supervisor_configs/dist/flower.conf b/config_app/supervisor_configs/dist/flower.conf new file mode 100644 index 0000000..1f7e901 --- /dev/null +++ b/config_app/supervisor_configs/dist/flower.conf @@ -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 diff --git a/config_app/supervisor_configs/dist/worker.conf b/config_app/supervisor_configs/dist/worker.conf new file mode 100644 index 0000000..faabaea --- /dev/null +++ b/config_app/supervisor_configs/dist/worker.conf @@ -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 diff --git a/config_app/supervisor_configs/schedule.conf b/config_app/supervisor_configs/schedule.conf index 8b7e176..5876aa9 100644 --- a/config_app/supervisor_configs/schedule.conf +++ b/config_app/supervisor_configs/schedule.conf @@ -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 \ No newline at end of file +redirect_stderr=true