uWSGI 1.9.1¶
1.9版本树的第一个小版本。
Legion scrolls api¶
scrolls是附加到 Legion 集群中的每个成员上的文本。我们正在慢慢地定义一个API,以允许开发者直接在他们的应用和配置中使用legion子系统。1.9.1中添加的是uwsgi.scrolls(legion)函数,它返回由整个集群定义的当前scrolls的一个列表/数组。这还不是完全可用(有用)的,后续还会有更多的函数……
按需vassals¶
对于大规模托管的更好的资源使用的另一步。你现在可以告诉 Emperor 只在对指定的socket进行的第一个请求之后才启动vassal。与 –idle/–die-on-idle 选项相结合,就可以拥有完全按需的应用了。
要为每个vassal定义等待的socket,你有3个选项:
–emperor-on-demand-extension <ext>¶
这将会指示Emperor去检查一个名为<vassal>+<ext>的文件,如果该文件可用,那么将会读取,并把其内容作为socket等待的内容:
uwsgi --emperor /etc/uwsgi/vassals --emperor-on-demand-extension .socket
假设有一个在/etc/uwsgi/vassals中的myapp.ini文件,那么将会搜索/etc/uwsgi/vassals/myapp.ini.socket (而它的内容会用作这个socket的名字)
在第一次连接的时候,会生成vassal,并且会将socket作为文件描述符0进行传递。文件描述符0总是会被uWSGI检查,因此你并不需要在vassal文件中指定一个–socket选项。这自动对uwsgi socket有效,如果你使用其他协议 (例如http或者fastcgi),那么你必须使用–protocol选项来指定它
–emperor-on-demand-directory <dir>¶
这是较不通用的方法,只支持UNIX socket。基本上,vassal的名字 (不带扩展名和路径)会被附加到指定的目录,并带上.socket扩展名,然后作为按需 socket使用:
uwsgi --emperor /etc/uwsgi/vassals --emperor-on-demand-directory /var/tmp
使用前一个例子,socket /var/tmp/myapp.socket将会被自动绑定
–emperor-on-demand-exec <cmd>¶
只是你(非常有可能)用在很大的部署中。每次添加了一个新的vassal,就会运行提供的命令,并把vassal名当做第一个参数传递。命令的STDOUT作为socket名使用。
pyring构建配置文件¶
这是一个非常特别的构建配置文件,允许你自动构建一个带完整python支持和模块化jvm + ring执行的虚拟环境(注:原文是jvm + ring honouring virtualenvs)的uWSGI栈。
crypto记录器¶
如果你在云服务上托管你的应用,并且没有永久存储,那么你可能想要发送日志到外部系统。忧伤的是,日志常常包含敏感信息,你不应该明文传输它们。新的crypto记录器试着解决这个问题,它允许你加密每个日志包,然后通过udp将它发送给能够解密它的服务器。
在下面的例子中
uwsgi --plugin logcrypto --logger crypto:addr=192.168.173.22:1717,algo=bf-cbc,secret=ciaociao -M -p 4 -s :3031
将会发送每个日志包给192.168.173.22:1717指定的udp服务器,根据’ciaociao’密钥,使用blowfish cbc算法来加密文本。
这里是一个可用的样例服务器:
https://github.com/unbit/uwsgi/blob/master/contrib/cryptologger.rb
rpc内部路由指令¶
添加了”rpc”路由指令,允许你直接从路由子系统调用rpc函数,并将它们的输出转发到客户端。
看看下面的例子:
[uwsgi]
http-socket = :9090
route = ^/foo addheader:Content-Type: text/html
route = ^/foo rpc:hello ${REQUEST_URI} ${HTTP_USER_AGENT}
route = ^/bar/(.+)$ rpc:test $1 ${REMOTE_ADDR} uWSGI %V
route = ^/pippo/(.+)$ rpc:[email protected]:4141 $1 ${REMOTE_ADDR} uWSGI %V
import = funcs.py
carbon插件对名字解析的初步支持¶
你可以使用主机名来指定carbon服务器。当前的代码是非常简单的。以后的更新将会支持轮询。
新的路由条件¶
添加了新的路由条件 (equal,startswith,endswith,regexp),看看更新的文档:
https://uwsgi-docs.readthedocs.io/en/latest/InternalRouting.html#the-internal-routing-table
‘V’魔术变量¶
你可以在配置中使用%V魔术变量来引用uWSGI版本字符串
‘mongodb’一般插件¶
这是一个用于不能访问共享libmongoclient的packager的商品插件。这基本上在一个可以被其他mongodb插件使用的新的共享对象中链接它。
通过网络构建profile¶
现在,你可以使用url(支持http, https和ftp)来引用构建配置文件了:
UWSGI_PROFILE=http://uwsgi.it/psgi.ini make