You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							2.1 KiB
						
					
					
				import logging
 | 
						|
import os
 | 
						|
import subprocess
 | 
						|
import sys
 | 
						|
import time
 | 
						|
 | 
						|
import psutil
 | 
						|
from django.conf import settings
 | 
						|
 | 
						|
from api.tasks import start_api_sever_do_clean
 | 
						|
from config import BASECONF
 | 
						|
from config import BASE_DIR
 | 
						|
from xsign.utils.iproxy import clean_ip_proxy_infos
 | 
						|
 | 
						|
try:
 | 
						|
    __version__ = BASECONF.VERSION
 | 
						|
except ImportError as e:
 | 
						|
    print("Not found __version__: {}".format(e))
 | 
						|
    print("Python is: ")
 | 
						|
    logging.info(sys.executable)
 | 
						|
    __version__ = 'Unknown'
 | 
						|
 | 
						|
SOCKET_HOST = BASECONF.SERVER_BIND_HOST or '127.0.0.1'
 | 
						|
SOCKET_PORT = BASECONF.SERVER_LISTEN_PORT or 8080
 | 
						|
 | 
						|
CELERY_FLOWER_HOST = BASECONF.CELERY_FLOWER_HOST or '127.0.0.1'
 | 
						|
CELERY_FLOWER_PORT = BASECONF.CELERY_FLOWER_PORT or 5555
 | 
						|
 | 
						|
DEBUG = BASECONF.DEBUG or False
 | 
						|
BASE_DIR = settings.BASE_DIR
 | 
						|
APPS_DIR = BASE_DIR
 | 
						|
LOG_DIR = os.path.join(BASE_DIR, 'logs')
 | 
						|
TMP_DIR = os.path.join(BASE_DIR, 'tmp')
 | 
						|
 | 
						|
 | 
						|
def check_database_connection():
 | 
						|
    os.chdir(BASE_DIR)
 | 
						|
    for i in range(60):
 | 
						|
        logging.info("Check database connection ...")
 | 
						|
        _code = subprocess.call("python manage.py showmigrations api ", shell=True)
 | 
						|
        if _code == 0:
 | 
						|
            logging.info("Database connect success")
 | 
						|
            return
 | 
						|
        time.sleep(1)
 | 
						|
    logging.error("Connection database failed, exit")
 | 
						|
    sys.exit(10)
 | 
						|
 | 
						|
 | 
						|
def check_migrations():
 | 
						|
    _cmd = "python manage.py showmigrations | grep '\[.\]' | grep -v '\[X\]'"
 | 
						|
    _code = subprocess.call(_cmd, shell=True, cwd=BASE_DIR)
 | 
						|
 | 
						|
    if _code == 1:
 | 
						|
        return
 | 
						|
 | 
						|
 | 
						|
def perform_db_migrate():
 | 
						|
    logging.info("Check database structure change ...")
 | 
						|
    os.chdir(BASE_DIR)
 | 
						|
    logging.info("Migrate model change to database ...")
 | 
						|
    _code = subprocess.call('python3 manage.py migrate', shell=True)
 | 
						|
    if _code == 0:
 | 
						|
        return
 | 
						|
    logging.error('Perform migrate failed, exit')
 | 
						|
    sys.exit(11)
 | 
						|
 | 
						|
 | 
						|
def prepare():
 | 
						|
    check_database_connection()
 | 
						|
    check_migrations()
 | 
						|
    perform_db_migrate()
 | 
						|
 | 
						|
 | 
						|
def clean_cache():
 | 
						|
    start_api_sever_do_clean()
 | 
						|
    clean_ip_proxy_infos()
 | 
						|
 | 
						|
 | 
						|
def get_sys_thread_num():
 | 
						|
    return psutil.cpu_count(False) if psutil.cpu_count(False) else 2
 | 
						|
 | 
						|
 | 
						|
def get_sys_process_num():
 | 
						|
    return psutil.cpu_count(True) if psutil.cpu_count(True) else 4
 | 
						|
 |