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