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()。
对websockets传出数据包使用单个缓冲区
在这个补丁之前,需要为每个单一的websocket包分配一个内存块。
这个补丁强制重新使用单个动态缓冲区。这应该对响应有一个相当不错的提高。
新特性
已移除zeromq api
已移除zeromq api (实际上是一个单一的函数)。每个需要zeromq的插件可以简单调用zmq_init(),而不是uwsgi_zeromq_init()。
mongrel2支持已被移到’mongrel2’插件上。
uWSGI与mongrel2配对,可以使用跟之前一样的选项,只是记得要加载(和构建)mongrel2插件
新的共享区域
已重写共享区域子系统 (它与旧的API不兼容,因为它现在支持多内存区域了,因此它需要一个新的参数)。
看看已更新文档: SharedArea —— uWSGI组件间共享内存页
在写入器和读取器中报告请求数据
在从客户端读取/写入客户单时发生的每个错误将会报告当前请求数据。
这应该会大大简化调试
模块化日志块管理
已扩展uWSGI api,允许插件定义它们的日志请求变量。
看看: 格式化uWSGI请求日志
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,启用/禁用订阅包的发送
as-mule钩子
这个新的自定义钩子允许你在每个mule中执行自定义代码:
- [uwsgi]
- hook-as-mule = exec:myscript.sh
- ...
接收钩子和改进的链式重载
已改进链式重载子系统,以考虑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钩子
可用性
uWSGI 1.9.21于2013年12月11日发布
你可以从下面地址下载它: