主页

索引

模块索引

搜索页面

配置文件

加载配置文件:

uwsgi --ini http://uwsgi.it/configs/myapp.ini # HTTP
uwsgi --xml - # standard input
uwsgi --yaml fd://0 # file descriptor
uwsgi --json 'exec://nc 192.168.11.2:33000' # arbitrary executable

‘@’魔法

  • 可以使用 @(filename) 形式来包含一个文件的内容

  • ’@’可以读取来自所有支持的 uwsgi 方案的内容:

    [uwsgi]
    ; read from a symbol
    foo = @(sym://uwsgi_funny_function)
    ; read from binary appended data
    bar = @(data://0)
    ; read from http
    test = @(http://example.com/hello)
    ; read from a file descriptor
    content = @(fd://3)
    ; read from a process stdout
    body = @(exec://foo.pl)
    ; call a function returning a char *
    characters = @(call://uwsgi_func)
    

核心配置选项

socket相关选项:

--socket/-s: 使用默认协议绑定到指定 UNIX/TCP socket 
--uwsgi-socket/-s: 使用 uwsgi 协议绑定到指定 UNIX/TCP socket 
--http-socket: 使用 HTTP 协议绑定到指定 UNIX/TCP socket 
--https-socket: 使用 HTTPS 协议绑定到指定 UNIX/TCP socket 
--ssl-socket: 使用 SSL 之上的 uwsgi 协议绑定到指定的 UNIX/TCP socket
--fastcgi-socket: 使用 FastCGI 协议绑定到指定 UNIX/TCP socket 

protocol相关选项:

--protocol: 对默认 socket 强制使用指定的协议
--socket-protocol: 对默认 socket 强制使用指定的协议
--shared-socket: 为高级 jailing 或者 ipc 创建一个共享 socket

并发进程相关:

--processes/-p: 生成指定数目的 进程/worker
--workers/-p: 生成指定数目的 进程/worker
--harakiri/-t: 设置 harakiri 超时(单位s)
    一个请求花费的时间超过了这个 harakiri 超时时间,那么这个请求都会被丢弃
    并且当前处理这个请求的工作进程会被回收再利用(即重启)
--harakiri-verbose: 对 harakiri 启用 verbose 模式

--threads: 在 prethreaded 模式下运行每个 worker,使用指定数目的线程

--enable-threads: 启用线程

--post-buffering: 启用后缓冲(post buffering),即在请求体被完全接收之前开始处理请求
    示例:
    post-buffering = true
    注:
    好像启用harakiri就要启用post-buffering
    但启用了还是报下面错误:
        *** WARNING: you have enabled harakiri without post buffering.
        Slow upload could be rejected on post-unbuffered webservers ***
    可能的解释:
        https://stackoverflow.com/questions/20208572/uwsgi-what-is-the-fix-for-you-have-enabled-harakiri-without-post-buffering
--buffering-bufsize: 设置 post buffering 模式下,read () 的缓冲大小


# 解释器这块请参见专门章节 <interpreter-解释器>
multi-interpreter = true
single-interpreter = true

指定配置文件格式:

--xml/-x:
--ini
--yaml/-y:
--yml/-y:
--json/-j:
--js/-j:
--config: 使用可插拔系统加载配置

emperor 进程管理:

--emperor: 运行 Emperor
--heartbeat:  emperor 宣告健康

log:

--logto: 设置 logfile/udp 地址
--logto2: 在移除特权之后记录日志到指定的文件或者 udp 地址
--log-format: 为请求日志记录设置高级格式
    log-format = [pid: %(pid)|app: %(wid)|req: %(serial)/%(requests)] %(addr) (%(vars)) [%(ftz)] %(method) %(uri) => generated %(size) bytes in %(msecs) msecs (HTTP/%(proto) %(status)) %(headers) (%(switches) switches on core %(core))

--logger: 设置 / 附加一个记录器
--log-truncate: 启动时清除日志

--log-maxsize: 设置最大日志文件大小
--disable-logging/-L: 禁用请求日志记录

统计/调优:

--stats: 在指定的地址上启用统计信息服务器
--stats-http: 给统计信息服务器的 json 输出加上 http 头部前缀

--memory-report: 启用内存报告
--profiler: 启用指定的 profiler

其他:

--daemonize/-d: 守护进程
--listen/-l: 设置 socket 监听队列大小
--buffer-size: 设置内部缓冲大小(默认4k)
--master/-M: 启用 master 进程

--queue: 启用共享队列
--uid:
--gid:

--udp: 在指定的地址上运行 udp 服务器
--stats: 在指定的地址上启用统计信息服务器

--chdir: 应用加载前 chdir 到指定目录

--mode: 设置 uWSGI custom 模式
--env: 设置环境变量


--cron: 新增一个 cron 任务




--chdir: 应用加载前 chdir 到指定目录
--lazy: 请使用lazy-apps,lazy有更强的侵入性,有这个选项主要为了向后兼容
--lazy-apps: 在每个 worker 而不是 master 中加载应用

--vacuum: 尝试移除所有生成的文件 /socket
--pidfile: 创建 pid 文件 (在移除特权之前)
--pidfile2: 创建 pid 文件 (在移除特权之后)

--reload-mercy: 设置 the maximum time (以秒为单位) we wait for workers and other processes to die during reload/shutdown
--max-requests: 在指定数量的管理请求后重载 worker
    防止内存泄漏或其他长时间运行导致的问题。
    主要目的是提高应用程序的稳定性和可靠性。
    通过定期重新启动 worker 进程,可以防止某些问题导致的内存泄漏或资源耗尽,从而保持应用程序的健康状态
--limit-as: 限制 uWSGI 的进程占用虚拟内存(单位M)

--connect-and-read: 连接到一个 socket,并且等待来自它的数据

plugin: python

指定文件适合于简单的、非模块化的 Python 项目:

--wsgi-file: 加载.wsgi 文件
--file: 加载.wsgi 文件

指定模块适合于使用框架提供的路由、视图函数等结构化的开发(如,使用 Flask、Django 等框架开发的应用):

--module/-w: load a WSGI module
--wsgi/-w: load a WSGI module
--callable:  设置 default WSGI callable name

示例:
    module = appm:appf
    相当于=>
    module = appm
    callable = appf

其他:

--test/-J: test a module import

--home/-H: set PYTHONHOME/virtualenv
--virtualenv/-H: set PYTHONHOME/virtualenv
--venv/-H: set PYTHONHOME/virtualenv
--pyhome/-H: set PYTHONHOME/virtualenv


--py-tracebacker: 启用 uWSGI python tracebacker

--py-autoreload: 监控 python 模块 mtime 来触发重载(开发专用)
--py-autoreload:
--python-auto-reload:
--python-autoreload:
--py-auto-reload-ignore: 自动重载扫描期间,忽略指定的模块 (可以多次指定)

plugin: http

--http: 在指定地址上添加一个 http 路由器 / 服务器
--https: 在指定地址上添加一个 https 路由器 / 服务器,使用指定的证书和密钥
--https2: 使用键值选项添加一个 https/spdy 路由器 / 服务器

主页

索引

模块索引

搜索页面