code排版测试


这是一个测试内联代码样式的段落。例如,console.log('Hello') 是一个内联代码示例,它应该有浅色背景 (#f8f8f8) 和橙色文本 (#e96900)。

另一个例子:使用 npm install 命令安装依赖,或者使用 hexo generate 生成静态文件。

下面是一个代码块,它应该有深色背景 (#2d2d2d):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Flask网关系统启动脚本
"""

import os
import sys
import argparse
from dotenv import load_dotenv


def print_banner():
"""打印启动横幅"""
banner = """
╔══════════════════════════════════════════════════════════════╗
║ Flask网关系统 v1.0 ║
║ ║
║ 统一入口 | 集成管理 | 安全可靠 ║
╚══════════════════════════════════════════════════════════════╝
"""
print(banner)


def check_dependencies():
"""检查依赖包"""
required_packages = {
'flask': 'Flask',
'dotenv': 'python-dotenv',
'werkzeug': 'Werkzeug'
}

missing_packages = []

for module_name, package_name in required_packages.items():
try:
__import__(module_name)
except ImportError:
missing_packages.append(package_name)

if missing_packages:
print('❌ 缺少必需的依赖包:')
for package in missing_packages:
print(f' - {package}')
print('\n请运行以下命令安装依赖:')
print(' pip install -r requirements.txt')
sys.exit(1)

# 检查Python版本
if sys.version_info < (3, 8):
print('❌ Python版本过低,需要Python 3.8或更高版本')
print(f' 当前版本: Python {sys.version_info.major}.{sys.version_info.minor}')
sys.exit(1)


def load_environment():
"""加载环境变量"""
# 只加载网关自己的配置
# 子应用的配置由子应用自己在加载时处理,避免环境变量冲突
env_file = '.env'
if os.path.exists(env_file):
print(f'✓ 加载网关配置: {env_file}')
load_dotenv(env_file)
else:
print(f'⚠ 未找到配置文件: {env_file},使用默认配置')

# 动态检查所有子应用的配置文件(仅提示,不加载)
from app.config import Config
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

print('\n检查子应用配置文件:')

for app_config in Config.SUB_APPS:
app_name = app_config['name']
app_path = app_config['path']

# 计算实际路径
if not os.path.isabs(app_path):
app_path = os.path.join(parent_dir, app_path)

# 尝试查找配置文件(按优先级)
possible_env_files = ['.env', '.env.dev', '.env.local', '.env.example']
env_found = False

for env_file_name in possible_env_files:
env_path = os.path.join(app_path, env_file_name)
if os.path.exists(env_path):
print(f' ✓ {app_name}: {env_path}')
env_found = True
break

if not env_found:
print(f' ⚠ {app_name}: 未找到配置文件 ({app_path})')


def parse_args():
"""解析命令行参数"""
parser = argparse.ArgumentParser(description='Flask网关系统')
parser.add_argument('--host', '-H',
default=os.environ.get('GATEWAY_HOST', '127.0.0.1'),
help='服务主机 (默认: 127.0.0.1)')
parser.add_argument('--port', '-p', type=int,
default=int(os.environ.get('GATEWAY_PORT', 8000)),
help='服务端口 (默认: 8000)')
parser.add_argument('--config', '-c',
choices=['development', 'production', 'testing', 'default'],
default=os.environ.get('FLASK_CONFIG', 'development'),
help='配置环境 (默认: development)')
parser.add_argument('--debug', '-d', action='store_true',
help='启用调试模式')

return parser.parse_args()


def main():
"""主函数"""
# 打印横幅
print_banner()

# 检查依赖
print('正在检查依赖...')
check_dependencies()
print('✓ 依赖检查通过\n')

# 添加当前目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

# 加载环境变量
print('正在加载配置...')
load_environment()
print()

# 解析命令行参数
args = parse_args()

# 更新环境变量
os.environ['FLASK_CONFIG'] = args.config
os.environ['GATEWAY_HOST'] = args.host
os.environ['GATEWAY_PORT'] = str(args.port)

try:
# 导入应用
from app import create_app

# 创建应用
print(f'正在创建应用实例 (配置: {args.config})...')
app = create_app(args.config)
print('✓ 应用创建成功\n')

# 显示已注册的子应用
if hasattr(app, '_sub_apps') and app._sub_apps:
print('已注册的子应用:')
for url_prefix in app._sub_apps.keys():
print(f' - {url_prefix}')
print()

# 启动应用
debug_mode = args.debug or args.config in ['development', 'default']

print('=' * 60)
print(f'🚀 Flask网关系统启动成功!')
print(f'📊 配置环境: {args.config}')
print(f'🌐 访问地址: http://{args.host}:{args.port}')
print(f'🔧 调试模式: {"开启" if debug_mode else "关闭"}')
print('=' * 60)
print('\n按 Ctrl+C 停止服务器\n')

app.run(
host=args.host,
port=args.port,
debug=debug_mode,
use_reloader=debug_mode
)

except KeyboardInterrupt:
print('\n\n正在关闭服务器...')
print('✓ 服务器已关闭')
sys.exit(0)
except Exception as e:
print(f'\n❌ 启动失败: {str(e)}')
import traceback
traceback.print_exc()
sys.exit(1)


if __name__ == '__main__':
main()


文章作者: JiangShiHe
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 JiangShiHe !
  目录