flask的uwsgi与supervisor配置

一、uwsgi配置

[uwsgi]
# 允许主进程存在
master=true

# 
chdir=/root/project
virtualenv=/root/project/venv 

# “mount”参数表示将”/”地址路由到”run.py”中,”manage-script-name”参数表示启用之前在Nginx里配置的”SCRIPT_NAME”参数。再次重启Nginx和uWSGI,你就可以通过”http://localhost/app”来访问应用了
mount=/=run.py
manage-script-name=true

# 监控参数或py文件的修改,当有修改时会触发重载,生产环境不允许设为1 (只在开发时使用)
py-autoreload=0

# uWSGI试图在一切可能的情况下(滥)用 fork() 调用的写时拷贝语义。默认情况下,它会在加载你的应用之后进行fork,以尽可能的共享它们的内存。如果出于某些原因,不期望这个行为,那么使用 lazy-apps 选项。这将会指示uWSGI在每个worker的 fork() 之后加载应用
lazy-apps=true

# 设置在收到请求时,uWSGI加载的模块中哪个变量将被调用,默认是名字为“app”的变量
callable=app

# 指定uwsgi的客户端将要连接的socket的路径(使用UNIX socket的情况)或者地址(使用网络地址的情况)
socket=127.0.0.1:5003

# 设置socket的监听队列大小
listen = 65535

# uwsgi进程数
processes=16

# 记录uwsgi的master进程的pid
pidfile = /data/project_logs/project_uwsgi.pid

# 设置请求的最大大小 (排除request-body),这一般映射到请求头的大小。默认情况下,它是4k
buffer-size=32768

# 将日志打到指定的日志文件,如果使用“daemonize =”的话会导致supervisor守护进程失败,因为设置daemonize在将日志记录到文件的同时,也会让uWSGI进程进入后台守护uWSGI,而supervisor本身就已经起到了守护进程的作用
logto = /data/project_logs/uwsgi.log

# 以固定的文件大小(单位KB),切割日志文件
log-maxsize = 1000000

# 当启动时切分日志
log-truncate = true

# 不记录请求信息request的日志。只记录错误以及uWSGI内部消息到日志中
disable-logging = true

# 将uWSGI状态作为一个JSON对象导出到一个socket,使用uwsgi --connect-and-read /data/project_logs/uwsgi_stats.sock可以获取这个json对象
stats = /data/project_logs/uwsgi_stats.sock

# 启用gevent循环引擎,使用指定数目的异步核心数和优化参数
gevent=1000

# 启动时自动调用gevent.monkey.patch_all()
gevent-monkey-patch=true

二、supervisor配置

[program:project]
directory=/root/project
command=/root/project/venv/bin/uwsgi --ini project_uwsgi.ini
autostart = true
startsecs = 5
autorestart = true
redirect_stderr = true

猜你喜欢

转载自www.cnblogs.com/lanlingshao/p/9696391.html