From 427ae69f225c7fba07d1dac427c60ec369ab503a Mon Sep 17 00:00:00 2001 From: andrey Date: Sat, 21 Oct 2017 00:20:05 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=83=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=B3=D0=BE=D0=B2=20celery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/commands/build_celery.py | 60 +++++++++++++++++++ config_app/management/commands/clear_log.py | 8 ++- config_app/supervisor_configs/build.conf | 7 +++ config_app/supervisor_configs/dist/beat.conf | 7 +++ .../supervisor_configs/dist/flower.conf | 7 +++ .../supervisor_configs/dist/worker.conf | 7 +++ config_app/supervisor_configs/schedule.conf | 8 +-- 7 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 config_app/management/commands/build_celery.py create mode 100644 config_app/supervisor_configs/build.conf create mode 100644 config_app/supervisor_configs/dist/beat.conf create mode 100644 config_app/supervisor_configs/dist/flower.conf create mode 100644 config_app/supervisor_configs/dist/worker.conf 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