[uwsgi]
# 指定 WSGI 应用的入口模块和对象
# 格式为 module:callable，例如 app:app 表示模块名为 app.py，应用对象为 app
module = app:app

# 指定 uWSGI 监听的 HTTP 地址和端口
# 如果使用 Nginx 反向代理，可以注释掉此行
http = 0.0.0.0:18019

# 设置 uWSGI 启动的进程数
# 根据服务器性能和需求调整进程数
processes = 4

# 设置每个进程的线程数
# 线程数和进程数共同影响并发处理能力
threads = 2

# 启用主进程
master = true

# 优雅地重启工作进程
# 当收到SIGINT信号时，等待当前请求完成后再重启
reload-mercy = 10

# 进程超时时间（秒），如果一个请求处理时间超过这个值，工作进程会被杀死
harakiri = 30

# 接收到请求的队列最大长度，如果队列已满，新的请求将被拒绝
listen = 100

# 最大并发请求数
max-requests = 1000

# 每个工作进程处理完指定数量的请求后自动重启，防止内存泄漏
max-worker-lifetime = 3600

# 缓冲区大小设置
buffer-size = 32768

# 指定日志文件的路径
# uWSGI 的运行日志将写入此文件
logto = /home/v6ole/pyproject/4an/uwsgi.log

# 指定虚拟环境的路径
# uWSGI 将使用此虚拟环境中的 Python 解释器和依赖库
virtualenv = /home/v6ole/pyproject/venv

# 设置应用的根目录
# uWSGI 将切换到此目录运行，确保应用的相对路径正确
chdir = /home/v6ole/pyproject/4an/app

# 设置 PID 文件的路径
# PID 文件用于管理 uWSGI 进程（如停止、重启）
pidfile = /home/v6ole/pyproject/4an/uwsgi.pid

# 设置 Unix Socket 文件的路径
# 用于与 Nginx 或其他代理服务器通信
# 如果使用 HTTP 模式，可以注释掉此行
socket = /home/v6ole/pyproject/4an/uwsgi.sock

# 设置 Socket 文件的权限
# 660 表示只有所有者和所属组有读写权限
chmod-socket = 660

# 当 uWSGI 退出时，自动清理其创建的套接字和 PID 文件
# 保持环境整洁，避免遗留文件
vacuum = true

# 设置日志文件的最大大小（单位为字节）
# 当日志文件达到此大小时，uWSGI 将自动轮转日志
# 示例值为 10MB
log-maxsize = 10000000

# 禁用请求日志，减少IO负担
disable-logging = true
log-slow = 1000  # 只记录处理时间超过1000ms的请求

# 紧急情况下尝试恢复的时间（秒）
worker-reload-mercy = 60

# 自动重载配置
py-autoreload = 1

# 内存报告
memory-report = true

# 启用统计服务器
stats = 127.0.0.1:9191

# 平滑重启
touch-chain-reload = true
touch-reload = uwsgi.reload
reload-on-exception = true  # 当出现异常时自动重启

# 启用线程支持
enable-threads = true

# 设置自动异常处理
catch-exceptions = true