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] |
[program:schedule] |
||||||
command=/home/andrey/skillbox/bin/celery -A lms beat -l=info |
command=celery -A lms beat -l=info |
||||||
directory=/home/andrey/skillbox/go.skillbox.ru |
directory=/www/servers/python-server/go.skillbox.ru |
||||||
user=andrey |
user=www |
||||||
stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/schedule.log |
stdout_logfile=/home/andrey/skillbox/go.skillbox.ru/logs/schedule.log |
||||||
autorestart=true |
autorestart=true |
||||||
redirect_stderr=true |
redirect_stderr=true |
||||||
Loading…
Reference in new issue