uWSGI 1.9.21¶
2.0(定于2013年12月30日)之前的最后一个1.9版本
从现在起,所有的版本都将-rc (将不会增加新功能)
一个描述从 (非常过时) 1.2 和 1.4版本起升级的注意事项的文档正在进行中。
这个版本包括一个直接嵌入到uWSGI二进制文件中的新的简化插件构建器子系统。
一个报告第三方插件的页面在这里: uWSGI第三方插件 (请随意添加你的插件)
然后现在……
更新日志 [20131211]
错误修复¶
- 如果psgi streamer失败,则中止
- 允许在raspberrypi上构建coroae
- 不等待可写,除非严格要求
- 在非异步模式下调用异步模式API时,避免段错误
- 修复纯 (无挂起引擎) 异步模式
- 在非x86 timerfd_create上,不显示错误
- 支持 __arm__ 上的timerfd_create/timerfd_settime
优化¶
用于第一个块的writev()¶
在内部发送第一个响应体时,uWSGI检查是否也发送了响应头,并最终使用额外的write()调用来发送它们。
这个新的优化允许uWSGI使用单个writev()系统调用来发送第一个响应体块。
如果writev()返回了第二个向量上不完整的写入,那么该系统将会回退到简单的write()。
新特性¶
已移除zeromq api¶
已移除zeromq api (实际上是一个单一的函数)。每个需要zeromq的插件可以简单调用zmq_init(),而不是uwsgi_zeromq_init()。
mongrel2支持已被移到’mongrel2’插件上。
uWSGI与mongrel2配对,可以使用跟之前一样的选项,只是记得要加载(和构建)mongrel2插件
tmsecs 和 tmicros, werr, rerr, ioerr, var.XXX¶
有6个新的请求日志变量可以用了:
tmsecs: 报告当前unix实现,以毫秒为单位
tmicros: 报告当前unix实现,以微秒为单位
werr: 报告当前请求的写错误数
rerr: 报告当前请求的读错误数
ioerr: werr和rerr的总数
var.XXX: 报告请求变量XXX (例如var.PATH_INFO) 的上下文
symcall的挂载点和mule支持¶
已改进symcall插件,支持mule和挂载点。
要在一个mule中运行一个c函数,仅需将其指定为 --mule=foobar()
。当该mule发现有个参数以()结尾,它将会把它当成一个函数符号。
read2和wait_milliseconds异步钩子¶
这两个非阻塞钩子添加新的功能到非阻塞系统上。
第一个允许用同一个调用等待两个文件描述符 (目前只在纯异步模式下实现了它)
第二个用于进行毫秒级别的休眠。 (这个目前只被共享区域等待系统使用)
websockets二进制消息¶
你现在可以发送websockets二进制消息了。仅需使用 uwsgi.websocket_send_binary()
来代替 uwsgi.websocket_send()
‘S’ master fifo命令¶
发送’S’到master fifo,启用/禁用订阅包的发送
接收钩子和改进的链式重载¶
已改进链式重载子系统,以考虑worker何时真正准备好accept()请求。
此特定的状态也会被宣告到Emperor。
看看这篇文章,以获得更多信息: https://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html
–after-request-call¶
这个选项允许你在每个请求后调用指定的C函数 (链式)。虽然你应该为这种任务使用框架/接口特性,但是有时在日志记录阶段之后不可能执行代码。在这种情况下,随意使用该选项。
错误页面¶
3个新的选项允许你自定义错误页面 (仅限html):
--error-page-403 <file>
为受管理的403响应添加一个错误页面(html)
--error-page-404 <file>
为受管理的404响应添加一个错误页面(html)
--error-page-500 <file>
为受管理的500响应添加一个错误页面(html)
简化插件构建器¶
构建uWSGI插件现在超级简单:
uwsgi --build-plugin <directory>
这个选项将会基于当前二进制创建一个健全的环境(无需使用构建配置文件和#ifdef),并且将会构建插件。
无需任何外部文件 (包括uwsgi.h),因为uWSGI二进制文件内置了它们。
2.0任务清单¶
- 实现Lua中的websockets和sharedarea支持
- 用于CPython, Perl, Ruby和PyPy的完整的sharedarea api
- 在所有可用的循环引擎中实现read2和wait_milliseconds钩子