英文原版: http://uwsgi-docs.readthedocs.io/en/latest/Options.htmlphp
转载地址: http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.htmlhtml
下面的内容包含了大部分uWSGI的配置选项,这些配置选项的列举没有特定的顺序。每个选项均可以使用在任何一种支持的配置方式里(如命令行参数、环境变量、xml文件、ini文件、yaml格式文件以及LDAP)。有些选项的使用须要某些插件的支持,这些插件的名字都会在文档里有说明。node
文档中的例子使用了多种形式的配置方式来让使用者更好的理解uwsgi的工做方式。python
若是你刚开始接触uWSGI,你最好是先看一下快速开始 和 例子 ,这些对实际使用过程的中的一些选项作了举例说明,另外下面列举的很是多的配置选项说明对于新手的阅读可能有一点吃力。linux
当使用某一种配置风格或者将一种风格转换另外一个风格时,须要注意一下规则:ios
命令行参数(command line args):须要给选项增长“--”前缀nginx
例如socket选项:web
--socket <path/address>
环境变量(environment variable):选项名都要换成大写,而且加上“UWSGI_”前缀,全部原来选项名中的“-”都要换成下划线“_”ajax
例如max-vars选项将变成:算法
UWSGI_MAX_VARS="<n>"
xml文件:xml文件中的根结点应该是<uwsgi>,全部的选项值是做为文本节点。标识符类型的选项能够没有对应的值。
socket选项和master选项能够以下配置:
<uwsgi>
<socket>127.0.0.1:3031</socket>
<master/>
</uwsgi>
ini文件:配置域应该是uwsgi,标识符类型的选项的值能够设为true或者1。
socket选项和master选项能够以下配置:
[uwsgi]
socket = 127.0.0.1:3031
master = true
yaml格式文件:根元素须要设置为uwsgi,标识符类型的选项的值能够设为true或者1。
socket选项和master选项能够以下配置:
uwsgi:
socket: 127.0.0.1
master: 1
lda格式:这个格式比较复杂,你应该查阅专门的wiki文档。见useLDAP。
深呼吸,如今咱们开始。
指定uwsgi的客户端将要链接的socket的路径(使用UNIX socket的状况)或者地址(使用网络地址的状况)。你最多能够同时指定8个socket选项。当使用命令行变量时,可使用“-s”这个缩写。
--socket /tmp/uwsgi.sock
以上配置将会绑定到 /tmp/uwsgi.sock 指定的UNIX socket
-s 127.0.0.1:1717
以上配置会绑定到ipv4地址127.0.0.1的1717端口
[uwsgi]
socket = 127.0.0.1:1717
socket = 127.0.0.1:2626
以上配置会绑定到ipv4地址127.0.0.1的1717端口以及ipv4地址127.0.0.1的2626端口。
设置默认的通讯协议(uwsgi,http,fastcgi)
--protocol <protocol>
为预先派生模式设置工做进程的数量。这个设置是你的app能实现简单而且安全的并发能力的基础。你设置的工做进程越多,你就能越快的处理请求。每个工做进程都等同于一个系统进程,它消耗内存,因此须要当心设置工做进程的数量。若是你设置的数量太多,就有多是系统崩溃。
当你使用命令行参数时,你可使用简化命令“-p”
--processes 8
以上配置会产生8个工做进程
--workers 4
以上配置会产生4个工做进程
-p 8
以上会产生8个工做进程
<uwsgi>
<workers>3</workers>
</uwsgi>
这个配置会产生3个工做进程
这个选项会设置harakiri超时时间(能够看wiki首页的相关内容)。若是一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,而且当前处理这个请求的工做进程会被回收再利用(即重启)。
--harakiri 60
这个设置会使uwsgi丢弃全部须要60秒才能处理完成的请求。
When a request is killed by harakiri you will get a message in the uWSGI log. Enabling this option will print additional info (for example in Linux will be reported the current syscall)
当一个请求被harakiri杀掉之后,你将在uWSGI日志中获得一条消息。激活这个选项会打印出额外的信息(例如,在linux中会打印出当前的syscall)。
--harakiri-verbose
以上配置会开启harakiri的额外信息。
set the harakiri mode for spooler tasks
为spooler任务设置harakiri模式
--spooler-harakiri <n> option
为mule进程设置harakiri模式
--mule-harakiri <n>
加载指定的xml配置文件。当使用命令行参数时,可使用简化命令“-x”。在xml配置文件中,你能够有多个“<uwsgi>”节,不一样的节之间用id属性区分。经过在文件名后面增长id(使用冒号分隔)来选择应用哪一个“<uwsgi>”节。
--xml /etc/myapp.xml
以上配置会加载/etc/myapp.xml这个配置文件。
--xml /etc/myapp.xml:django
以上命令会使用/etc/myapp.xml这个配置文件中的“django”这个节做为配置选项
这个文件内容能够像以下这样:
<all_the_apps>
<uwsgi id="turbogears">
<socket>/tmp/tg.sock</socket>
</uwsgi>
<uwsgi id="django">
<socket>/tmp/django.sock>
</uwsgi>
</all_the_apps>
这种状况下,根节点能够是任何你想要的名字(这就容许你能够将uwsgi这个配置节加到其余xml文件中)
若是在命令行的最后一个参数以“.xml”结尾,那么就隐含将加载该xml文件做为配置。
/usr/bin/uwsgi /etc/myapp.xml
以上命令会使uWSGI自动加载 /etc/myapp.xml配置文件。
设置一个占位符
--set KEY=VALUE
使进程在后台运行,并将日志打到指定的日志文件或者udp服务器
--daemonize /var/log/uwsgi.log
这个指令会让uWSGI在后台运行并将日志打到 /var/log/uwsgi.log文件中。
[uwsgi]
daemonize = 192.168.0.100:4000
这个配置将会使uWSGI在后台运行,而且将日志消息发送给监听192.168.0.100:4000这个地址的udp服务器。见UdpLogging。
发送一个SIGINT信号给<pidfile>文件中的pid标识的uWSGI
--stop <pidfile>
发送一个SIGHUP信号给<pidfile>文件中的pid标识的uWSGI
--reload <pidfile>
设置socket的监听队列大小(默认:100)。
每个socket都有一个相关联的队列,请求会被放入其中等待进程来处理。当这个队列慢的时候,新来的请求就会被拒绝。
队列大小的最大值依赖于系统内核。
设置uwsgi客户端可以传递给uwsgi的变量的最大数量值。这只是一个安全相关的值,大多数状况下你是不须要设置它的。
设置用于uwsgi包解析的内部缓存区大小。默认是4k。
若是你打算接受一个拥有不少请求头的大请求,你能够增长这个值到64k。
--buffer-size 32768
这个命令会容许uWSGI服务器接收最大为32k的uwsgi包,再大的包就会被拒绝。
enable memory usage report. This will print in the request log information about RSS and address space usage.
开启内存使用状况报告。这将打印请求相关的内存和虚拟内存的使用状况。
<uwsgi>
<memory-report/>
</uwsgi>
开启cgi模式。响应将再也不是HTTP可用的响应,而是cgi响应(会增长Status:这个请求头)
unix socket是个文件,因此会受到unix系统的权限限制。若是你的uwsgi客户端没有权限访问uWSGI socket,你能够用这个选项设置unix socket的权限。
当在xml配置文件中只是用这个选项做为一个标识符,那么会将权限设为666,不然就是设置为指定的权限值。
<uwsgi>
<chmod-socket/>
</uwsgi>
这个配置会将socket文件的权限设为666
<uwsgi>
<chmod-socket>644</chmod-socket>
</uwsgi>
这个配置会将socket文件的权限设为644
容许绑定到一个不存在的网络地址。
当你将一个uWSGI实例绑定到多个socket,你能够指定某些工做进程到某些socket来提升服务质量。
[uwsgi]
socket = /tmp/uwsgi0.sock
socket = /tmp/uwsgi1.sock
workers = 5
map-socket = 0:1,2,3
map-socket = 1:4,5
这个配置会使工做进程1,2和3绑定到第一个socket,而工做进程4和5绑定到第二个socket。
若是你让多个app都由同一个uWSGI实例来处理,你能够很方便地为每个app分配资源。
容许用内嵌的语言启动线程。这将容许你在app程序中产生一个子线程。
一些语言(好比python)有“多解释器”的概念。他们容许在同一个进程中独立存在不一样的app。若是你不想用这个特性,你可使用该选项。
这个选项将自动给uWSGI的进程设置一些有意义的名字,例如“uWSGI master”, “uWSGI worker 1”, “uWSGI worker 2”。
这个选项为进程名指定前缀。
--procname-prefix <value>
例如:
--procname-prefix test
那么,进程名将变成“testuWSGI master”、“testuWSGI worker 1”、“testuWSGI worker 2”等,test与uWSGI之间是连在一块儿的,可读性较差。
用这个选项给进程名指定前缀时,前缀和进程名之间有空格分隔。
--procname-prefix-spaced <value>
例如:
--procname-prefix-spaced test
那么,进程名将变成“test uWSGI master”、“test uWSGI worker 1”、“test uWSGI worker 2”等,比procname-prefix的可读性好一点。
屡次使用,后一次使用将覆盖前一次,即以最后一次使用为准。
这个选项为进程名增长指定的后缀。
--procname-append <value>
例如:
--procname-append test
那么,进程名将变成“uWSGI mastertest”、“uWSGI worker 1test”、“uWSGI worker 2test”等,test与master或者一、2是连在一块儿的,可读性也比较差。
屡次使用,后一次使用将覆盖前一次,即以最后一次使用为准。
为进程指定名字。
--procname <value>
例如:
--procname test
那么,全部进程的名字(包括主进程和工做进程)都变成了“test”。只能根据PPID来判断哪一个是主进程(主进程的PPID为1)。
注意,使用procname-prefix、procname-prefix-spaced以及procname-append都能在当前选项修改生效的基础上增长前缀和后缀。
屡次使用,后一次使用将覆盖前一次,即以最后一次使用为准。
指定主进程的名字。
--procname-master <value>
例如:
--procname-master test
那么,主进程的名字就变成了“test”。
注意,使用procname-prefix、procname-prefix-spaced以及procname-append都能在当前选项修改生效的基础上增长前缀和后缀。
屡次使用,后一次使用将覆盖前一次,即以最后一次使用为准。
另外,该选项将覆盖procname对主进程名字的修改。全部能够把procname和procname-master配合使用,达到修改全部进程的名字的同时又能将主进程和工做进程区分开的效果。
启动主进程。
开启uWSGI的Emperor模式。
开启emperor的tyrant模式。见tyrant。
为emperor模式开启一个uWSGI的统计服务器。见stats server。
--emperor-stats <addr>
start the emperor before jailing and privileges drop
为emperor开启bloodlord模式。见broodlord。
set virtualhost name in AMQP emperor mode
set username name in AMQP emperor mode
set password name in AMQP emperor mode
set the number of milliseconds (default 1000) to wait before each vassal's fork()
<filename> will be executed when the emperor starts the vassals
--vassals-start-hook <filename>
<filename> will be executed when the emperor stop the vassals
--vassals-stop-hook <filename>
UNKNOWN
--auto-snapshot 1
设置在平滑的重启(直到接收到的请求处理完才重启)一个工做子进程中,等待这个工做结束的最长秒数。
--reload-mercy 8
这个配置会使在平滑地重启工做子进程中,若是工做进程结束时间超过了8秒就会被强行结束(忽略以前已经接收到的请求而直接结束)。
迫使在重启过程当中结束uWSGI的栈。这个选项只在某系特殊状况有用。
打印帮助信息到标准输出,而后退出。
开启reaper模式。没处理一个请求,服务器就会调用waitpid(-1)来清除全部的僵尸进程。若是你在你的app中生成了子进程,结束后又成为了不少僵尸进程,那么你能够开启这个选项。但遇到这种状况你更应该修复你这种子进程的使用方式(若是能够的话)。
为每一个工做进程设置请求数的上限。当一个工做进程处理的请求数达到这个值,那么该工做进程就会被回收重用(重启)。你可使用这个选项来默默地对抗内存泄漏(尽管这类状况使用reload-on-as和reload-on-rss选项更有用)。
[uwsgi]
max-requests = 1000
上述配置设置工做进程没处理1000个请求就会被回收重用。
为全部的socket操做设置内部超时时间(默认4秒)。
--socket-timeout 10
这个配置会结束那些处于不活动状态超过10秒的链接。
create <n> locks for you to use. see locks
建立n个锁以供使用。见locks。
--locks <n>
这个选项将开启SharedArea。这将容许一个比较低级的内存共享。若是你但愿用一个更好用更友好的共享系统,能够看CachingFramework。
--sharedarea 10
这个配置将建立一个10个页的共享内存区。
开启共享cache。见CachingFramework。
设置cache的块大小,默认为65536字节。最好设置为4096的倍数。
开启该选项,使uWSGI的cache中的内容可以被长久的保存。
设置msync()这个函数的调用频率,调用msync()这个函数可以将cache中的内容写到磁盘上。
UNDOCUMENTED
UNDOCUMENTED
UNDOCUMENTED
UNDOCUMENTED
在指定的目录下创建一个Spooler。
[uwsgi]
spooler = /home/foo/spooler
这个配置会将spooler文件保存到/home/foo/spooler directory目录下。
这个选项容许你为每个spooler任务定义一个公共的目录。
--spooler-chdir <directory>
增长一个mule进程。见Mules。
不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。
在失去权限前,将pid写到指定的pidfile文件中。
在失去权限后,将pid写到指定的pidfile文件中。
使用chroot()改变默认目录到指定目录。
在uWSGI服务器将要运行的状况下,设置gid。
在uWSGI服务器将要运行的状况下,设置uid。
设置ini配置文件的路径。
--ini <inifile>
设置yaml配置文件的路径。
--yaml <yamlfile>
设置json格式的配置文件的路径。
格式遵循的规则跟其余支持的配置格式同样(支持正整数,布尔数和数组):
{
"uwsgi": {
"http": ":8080",
"master": true,
"module": "werkzeug.testapp:test_app",
"workers": 8,
"pythonpath": [ "/foo", "/bar" ]
}
}
为了使用JSON,你须要jansson库。默认状况下,会自动检测到库的所在位置,可是你也能够buildconf或者默认ini配置文件来指定。emperor已经被扩展支持.js文件了。
--json <jsonfile>
从ldap服务器加载配置文件。见UseLdap(目前无文档)。
dump the LDAP schema (old-style format)
dump the LDAP schema in LDIF format (new openldap)
初始化uWSGI服务器,而后当初始化工做完成时当即结束(能够用来做测试)。
默认状况下(这个配置有效的状况下)uWSGI会延迟调用accept()去获取请求,直到客户端发送请求数据过来(这种方法可以提升性能和安全性)。可使用这个选项来禁用这个特性。
经过使用POSIX/UNIX的setrlimit()函数来限制每一个uWSGI进程的虚拟内存使用数。
--limit-as 256
这个配置会限制uWSGI的进程占用虚拟内存不超过256M。若是虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。
英文文档中还解释了address space其实就是虚拟内存。
在使用这个选项前先理解这个页面的内容: http://en.wikipedia.org/wiki/Virtual_memory
当一个工做进程的虚拟内存占用超过了限制的大小,那么该进程就会被回收重用(重启)。
--reload-on-as 128
这个配置会重启全部占用虚拟内存超过128M的工做进程。当工做进程所以重启时,本次请求的响应不会受影响,返回正常结果。
跟reload-on-as的效果相似,不过这个选项控制的是物理内存。你能够同时使用这2个选项:
uwsgi:
reload-on-as: 128
reload-on-rss: 96
这个配置会致使全部占用128M以上虚拟内存或者超过96M物理内存的工做进程重启。
当工做进程所以重启时,本次请求的响应不会受影响,返回正常结果。
主进程会重启占用虚拟内存超过<n>M的工做进程。
--evil-reload-on-as <n>
主要效果跟evil-reload-on-as同样,可是这个选项控制的是非共享物理内存。
--evil-reload-on-rss <n>
当uWSGI运行在多代理下时,会将正确的客户端IP打到日志中。
当文件改变时,优雅的重启uWSGI。
uwsgi:
touch-reload: /tmp/reload.txt
若是你使用下面的命令:
touch /tmp/reload.txt
那么uWSGI服务器就会优雅的重启。
限制HTTP请求体的大小。uWSGI经过CONTENT_LENGTH字段值来得到请求体的大小。
--limit-post 65536
将不容许请求体超过64k的请求。
在没有主进程的状况下自动结束工做进程。
设置进程的系统调度优先级。
<uwsgi>
<prio>20</prio>
</uwsgi>
设置CPU的亲和性(只对于Linux系统)。见 http://lists.unbit.it/pipermail/uwsgi/2011-March/001594.html
开启http请求体的缓存。uWSGI将全部大于限定大小的HTTP请求体保存到磁盘中。
[uwsgi]
post-buffering = 8192
上述配置会使uWSGI将全部大于8K的HTTP请求体都缓存到磁盘中。Rack应用程序须要这个选项,由于Rack应用程序须要一个可回退的输入流。
为post的缓存设置内部的缓冲区大小。(这个分配的内存是用来读取socket流的字节块)
post-buffering-bufsize 65536
上述配置会使uWSGI分配一个64k的socket的recv()函数的缓存区。对一个128k的请求体来讲,须要使用2个这样的缓存区。
这是一个比较高级的选项,你可能永远不会用到。
开启嵌入的上传进度报告。你传入一个uWSGI有写权限的目录,那么每个上传的JSON文件都会放到该目录下,开启这个选项后,就会报告当前的上传状态。你可使用ajax去读取这些文件,因此配置好你的web服务器容许对该目录的访问。
--upload-progress /var/www/progress
用户经过以下的url上传一个文件。
http://uwsgi.it/upload?X-Progress-ID=550e8400-e29b-41d4-a716-446655440000
uWSGI在请求url中找到X-Progress-ID,而后在 /var/www/progress下建立一个文件:
550e8400-e29b-41d4-a716-446655440000.js
该文件的内容以下:
{ "state" : "uploading", "received" : 170000, "size" : 300000 }
假设你已经在你的web服务器中将/progress这个URI映射到了/var/www/progress这个目录,那么你能够经过ajax pointing来得到那些json数据。
/progress/550e8400-e29b-41d4-a716-446655440000.js
极可能你的web服务器已经拥有一个类似的功能了,可是若是你须要改进原有的功能(或者只是想有更多的控制),那么就将该功能委托给uWSGI服务器。
默认状况下,当uWSGI没有找到SCRIPT_NAME指定的app时,会使用默认的app(大多数状况,默认的app都位于/目录下)。开启这个选项,在没有可用的app时会返回一个错误。
若是由于某些缘由,你的web服务器不能处理SCRIPT_NAME,你能够强制uWSGI自动重建PATH_INFO。
启动一个udp服务器,主要用在snmp或者为UdpLogging提供一个共享的打日志服务器。
内部选项,用于第三方插件。
加入指定的集群。见Clustering。
你能够获得一个集群里的节点列表,而不须要加入这个集群。
--cluster-nodes 225.1.1.1:1717
使用上述选项能获得225.1.1.1:1717这个集群的全部节点。这个列表提供给uwsgi内部均衡负载api用的。
优雅地重启整个集群。
--cluster 225.1.1.1:1717 --cluster-reload
使用上述选项会重启225.1.1.1:1717这个集群中的全部节点。
给一个集群的全部节点服务器发送一个日志信息。
--cluster 225.1.1.1:1717 --cluster-log "Hello World"
上述选项会在全部的节点日志文件中打印出"Hello World"
订阅一个SubscriptionServer,你能够经过配置屡次该选项来达到订阅多个服务器的目的。
[uwsgi]
subscribe-to = 192.168.0.1:2626:unbit.it
subscribe-to = 192.168.0.2:2626:uwsgi.it
一个高级选项,插件做者会用到,或者用于一些特殊的需求。该选项容许服务器在启动早期建立一个socket,在失去特权或者被监禁的时候依然能使用它。
启动一个SNMP服务器。见UseSnmp
set the snmp community string
主进程每秒都会进行一次扫描。若是须要你能够加长这个扫描时间。不建议。
若是uWSGI的二进制文件路径没有加到系统环境变量中,你可使用这个选项强制改变二进制的查找路径,那么重载系统和Emperor都能轻易找到可执行的二进制文件。
开启异步模式。见AsyncSupport。
将日志打到一个指定的文件或者udp服务器。
将日志打到系统日志上,而再也不打到日志文件中。
传入一个参数,使uwsgi使用这个参数做为程序名,用在系统日志开始部分里。
--log-syslog mywebapp
委托主进程来负责日志的写操做(这将把全部的日志IO操做都放到一个进程中)。对使用高级的IO调度策略的系统来讲是颇有用的。
在每个日志行中都打印时间信息。你能够传入一个strftime()格式的参数,来格式化时间的格式。
打印请求大小为0的请求。
使用微秒做为日志中响应时间的单位(默认是毫秒)。
以root权限运行uWSGI的主进程。
在失去权限前,使用chdir()到指定目录。
在失去权限后,使用chdir()到指定目录。
等每个工做进程都生成之后才加载应用程序。
延迟启动工做进程直到第一个请求到来。当第一个请求来时就会启动预先设置个数的工做进程。
若是没有设置工做进程数,那么最多只会启动一个工做进程。
一个高阶的cheap模式,这个选项将在启动的时候只分配n个工做进程,并将使用多种算法来实现适应性的进程启动。
在启动的时候至少会分配一个工做进程,即及时设置n为0,也会在最开始启动一个工做进程。
若是当前工做进程不足以处理收到的请求,那么就会按请求量按需启动其余的工做进程,直到工做进程达到预先设置的个数。
若是没有设置工做进程数,那么只会在刚启动的时候启动一个工做进程,以后将再也不启动其余进程。
--cheaper <n>
在通过<secs>秒的不活跃状态后销毁工做进程(这时就进入了cheap模式),只会剩下主进程。
若是有cheaper选项,那么就进入cheaper模式,以后收到第一个请求就会启动工做进程,启动的个数由cheaper选项里配置的n决定。
--idle <secs>
容许同一个进程加载多个app。
--mount /pinax=/var/www/pinax/deploy/pinax.wsgi
allows grunt processes
开启线程操做模式。你必须指定每一个工做进程的线程数。
--threads 40 --workers 2
这个配置会致使生成2个工做进程,每一个工做进程有40个子线程。
开启虚拟主机模式。见VirtualHosting
默认状况下,虚拟主机模式使用SERVER_NAME做为主机名的关键字。若是你但愿使用HTTP_HOST,那就加这个选项。
uWSGI会在移交控制权给指定处理者以前检查该选项指定的目录。
uWSGI会检查这个目录,若是恰好请求的PATH_INFO有一个文件在这个目录,那么uWSGI就会提供这个文件。
--check-static /var/www/example.com
使用上述配置,若是客户端请求foo.png,而该文件又刚好存在于/var/www/example.com/foo.png,那么uWSGI就会直接用指定的方法提供这个文件(默认是用sendfile ())。
映射一个资源到静态文件区。
[uwsgi]
static-map = /media=/var/www/django/contrib/admin/media
static-map = /images=/var/www/example.com/images
不管何时一个PATH_INFO匹配到配置文件中的资源,uWSGI会直接用指定的方法提供这个文件(默认是用sendfile ())。
在目录索引中用到的静态文件的文件名。
static-index = index.html
若是请求/doc/,那么uWSGI将检查/doc/index.html,若是存在就会提供给客户端。
设置静态服务模式:
1.x-sendfile:将使用X-Sendfile头(apache, Cherokee, lighttpd)
2.x-accel-redirect:将使用X-Accel-Redirect header(nginx)
3.default:使用sendfile()
--file-serve-mode x-sendfile
检查 uWSGI cache 中是否存在PATH_INFO指定的内容,若是存在就提供该内容。
给uWSGI的socket设置close-on-exec标识,这将避免在一个请求中产生额外的进程,来继承socket文件的描述符。
普通选项,app可使用uwsgi.mode来得到这个选项值。
设置一个系统环境变量。
[uwsgi]
env = DJANGO_SETTINGS_MODULE=mysite.settings
这个配置将会设置一个环境变量DJANGO_SETTINGS_MODULE,它的值为mysite.settings
当服务器退出的时候自动删除unix socket文件和pid文件。
run the server in <group> cgroup (Linux only)
设置cgroup选项(仅限于Linux)
--cgroup-opt KEY=VAL
容许多个实例绑定到同一个地址。
设置LoopEngine(高级选项)
funny option to map a new executable to a uWSGI worker. You can run a php fastcgi server pool in this way
/usr/bin/uwsgi --workers 4 --worker-exec /usr/bin/php53-cgi
给uWSGI主进程附加一个进程,并容许主进程控制、监控、重启这个进程。一个比较典型的使用是给主进行附加一个memcached实例。
[uwsgi]
master = true
attach-daemon = memcached
加载指定的插件。
--plugins psgi,greenlet
这个配置将加载psgi插件和greenlet插件。
限制客户端只能访问modifiers的子集。
--allowed-modifiers 0,111
这个配置将只容许客户端访问WSGI处理程序和cache处理程序。
打印全部可用的选项,而后退出。
以ini文件格式打印当前的配置。
将在解析配置文件的工程中打印一个字符串。
[uwsgi]
print = foo
将在服务器启动的时候打印"foo"。
打印出uWSGI的版本,而后退出。
加载指定的WSGI文件(与Graham的mod_wsgi形式兼容)
把计算一个字符串的值做为WSGI的入口。
<uwsgi>
<eval>
def application(e, sr):
pass
</eval>
</uwsgi>
加载指定的python WSGI模块(模块路径必须在PYTHONPATH里)
设置在收到请求时,uWSGI加载的模块中哪一个变量将被调用,默认是名字为“application”的变量。
测试一个模块是否能被成功的加载。
为python程序设置指定的虚拟环境变量。
--virtualenv /apps/env001
使用在/apps/env001的虚拟环境变量。
给PYTHONPATH 增长一个目录(或者一个egg),你能够最多使用该选项64次。
[uwsgi]
pp = myapp/lib
pp = trac.egg
该选项容许python模块的重映射。见PymoduleAlias。
set the python sys.argv
设置python的系统参数(sys.argv)
--pyargv "one two three"
该配置会将sys.argv 设为('one','two','three')。
设置python为最优化级别(要当心)
use paste.deploy to load a WSGI app
使用paste.deploy 来加载一个WSGI程序。
uwsgi --paste config:/foo/development.ini
ini和paste这2个选项的简化,在文件解析完以后,将使用一样的文件做为paste.deploy的配置文件。
load a paste.deploy config file containing uwsgi section (load loggers too)
在你的浏览器中打印出traceback信息,而不是在日志文件中(不要在实际产品中使用这个选项)。
不加载python的site.py模块。
工具性的选项。ping一个uwsgi服务器,若是ping成功,难么进程就会退出,并返回0,不然返回一个大于0的值。
/usr/bin/uwsgi --ping 192.168.0.100:1717
将ping在192.168.0.100:1717的uWSGI服务器。
设置ping的超时时间(默认是3秒)。ping的等待时间超过指定的秒数后就认为该uWSGI实例已失效。
/usr/bin/uwsgi --ping 192.168.0.100:1717 --ping-timeout 10
将设置ping的超时时间为10秒。
做nagios检查。
Run the fastrouter (it is a uwsgi proxy/load balancer) on specific address
在指定的地址上运行fastrouter(这是一个uwsgi的代理、负载均衡)。
[uwsgi]
fastrouter = 127.0.0.1:3017
在127.0.0.1:3017这个地址上运行fastrouter
check the uwsgi cache to get hostname:address mapping
use a filesystem pattern to get hostname:address mapping
limit the max number of async events the fastrouter can return in one cycle
add a SubscriptionServer to the fastrouter to build the hostname:address map
设置fastrouter的内部超时时间。
开启嵌入的http服务器、路由、网关、负载均衡、代理。
enable the SubscriptionServer for clustering and massive hosting/load-balancing
设置内部http的socket超时时间。
enable uGreen as suspend/resume engine. See uGreen
set the stack size for uGreen