uWSGI 1.9.1
1.9版本树的第一个小版本。
错误修复
修复优雅重载后的–req-logger
修复carbon插件的一种崩溃
修复多worker以及适当的写时复制时的信号处理
修复Rack插件中的异常处理
XSLT插件
添加了 XSLT 插件。它让我们通过请求插件或者 uWSGI内部路由 应用XML转换。
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名使用。
–exec-post-app钩子
除了其他–exec-*选项 (用来在不同的服务器阶段运行命令),添加了一个新的选项,以允许你在加载一个应用之后运行命令。
pyring构建配置文件
这是一个非常特别的构建配置文件,允许你自动构建一个带完整python支持和模块化jvm + ring执行的虚拟环境(注:原文是jvm + ring honouring virtualenvs)的uWSGI栈。
缓存路由器插件
这已经被改善了,在下一个发布版本中,我们应该能够只使用内部路由子系统就可以直接将响应存储在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:test@127.0.0.1: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
获取它
uWSGI 1.9.1于20130324发布
你可以从下面地址下载它: