Files
youtube-dl/lib/system/logic_env.py
soju6jan 29930fdef7 test
2022-10-02 20:18:05 +09:00

129 lines
4.5 KiB
Python

# -*- coding: utf-8 -*-
#########################################################
# python
import os
import traceback
import logging
import platform
import time
import threading
# third-party
from flask import Blueprint, request, Response, send_file, render_template, redirect, jsonify
# sjva 공용
from framework import F, path_app_root, path_data, celery, app
# 패키지
from .plugin import logger, package_name
from .model import ModelSetting
class SystemLogicEnv(object):
@staticmethod
def load_export():
try:
from support.base.file import SupportFile
f = os.path.join(path_app_root, 'export.sh')
if os.path.exists(f):
return SupportFile.read_file(f)
except Exception as exception:
logger.error('Exception:%s', exception)
logger.error(traceback.format_exc())
@staticmethod
def process_ajax(sub, req):
ret = False
try:
if sub == 'setting_save':
data = req.form['export']
#logger.debug(data)
data = data.replace("\r\n", "\n" ).replace( "\r", "\n" )
ret = False
if platform.system() != 'Windows':
f = os.path.join(path_app_root, 'export.sh')
with open(f, 'w') as f:
f.write(data)
#os.system("dos2unix export.sh")
ret = True
elif sub == 'ps':
def func():
import system
commands = [
['msg', u'잠시만 기다려주세요.'],
['ps', '-ef'],
['top', '-n1']
]
#commands.append(['msg', u'설치가 완료되었습니다.'])
system.SystemLogicCommand.start('ps', commands)
t = threading.Thread(target=func, args=())
t.setDaemon(True)
t.start()
elif sub == 'celery_test':
ret = SystemLogicEnv.celery_test()
elif sub == 'worker_start':
os.system('sh worker_start.sh &')
"""
def func():
import system
commands = [
['msg', u'잠시만 기다려주세요.'],
['sh', 'worker_start.sh'],
]
#commands.append(['msg', u'설치가 완료되었습니다.'])
system.SystemLogicCommand.start('ps', commands)
t = threading.Thread(target=func, args=())
t.setDaemon(True)
t.start()
"""
ret = True
except Exception as exception:
logger.error('Exception:%s', exception)
logger.error(traceback.format_exc())
return jsonify(ret)
@staticmethod
def celery_test():
if F.config['use_celery']:
from celery import Celery
from celery.exceptions import TimeoutError, NotRegistered
data = {}
try:
result = SystemLogicEnv.celery_test2.apply_async()
logger.debug(result)
try:
tmp = result.get(timeout=5, propagate=True)
except Exception as exception:
logger.error('Exception:%s', exception)
logger.error(traceback.format_exc())
#result = SystemLogicEnv.celery_test2.delay()
data['ret'] = 'success'
data['data'] = tmp
except TimeoutError:
data['ret'] = 'timeout'
data['data'] = u'celery가 동작중이 아니거나 모든 프로세스가 작업중입니다.'
except NotRegistered:
data['ret'] = 'not_registered'
data['data'] = u'Not Registered'
#logger.debug(data)
else:
data['ret'] = 'no_celery'
data['data'] = u'celery 실행환경이 아닙니다.'
return data
@staticmethod
@celery.task
def celery_test2():
try:
logger.debug('!!!! celery_test2222')
import time
time.sleep(1)
data = u'정상입니다. 이 메시지는 celery 에서 반환됩니다. '
return data
except Exception as exception:
logger.error('Exception:%s', exception)
logger.error(traceback.format_exc())