为直接在ZServer线程中运行视图提供基础设施
项目描述
简介
这个Zope附加产品提供了对ZServer视图的简单配置。
它由Leonardo Rochael Almeida编写,由OpenMultimedia赞助。
ZServer视图是一个(理论上)小巧且快速的WSGI应用程序,它直接在ZServer线程(即medusa线程)中运行。
这意味着即使所有Zope工作线程都忙于处理其他请求,ZServer视图也会运行。这也意味着如果ZServer视图不够快,那么它将阻止ZServer为所有工作线程处理传入请求,所以在使用此产品时要小心。
ZServer视图主要用于系统监控工具,如DeadlockDebugger或Zope资源监控。
安装
将Products.ZServerViews添加到定义您的Zope实例的部分的egg列表中。
配置
在您的Zope配置(例如,zope.conf文件或buildout配置中的zope-conf-additional参数)中添加一个用于zserver-views的product-config部分。
本节中的每个条目应包含一个标识符(必须在节内唯一,但目前未被使用[1]),一个URL路径以及从该URL路径提供的服务视图的点名称,所有这些都由空白分隔。例如
<product-config zserver-views> my-package /my/view my.package.mymodule.my_view thread-id /thr-id Products.ZServerViews.tests.common.current_thread_id_zserver_view </environment>
这意味着 http://yourserver/my/view URL 将运行 my.package.mymodule.my_view 下的 WSGI 应用,而 http://yourserver/thr-id URL 将运行 Products.ZServerViews.tests.common.current_thread_id_zserver_view WSGI 视图。
如果存在查询字符串,它将被传递给 ZServer 视图,但子路径不会被传递。也就是说,http://yourserver/my/view?foo=bar 将运行 my.package.mymodule.my_view,但 http://yourserver/thrid/fred 不会运行 Products.ZServerViews.tests.common.current_thread_id_zserver_view 视图,而是直接由 Zope 处理。
这种行为是有意为之,反映了 ZServer 视图位置是由单个字典查找决定的,而不是多个正则表达式或子字符串匹配。
编写 ZServer 视图
ZServer 视图是微型 WSGI 应用,这意味着它们接受 env 和 start_response 参数,并返回必须发送到浏览器的字节数据。如果有查询字符串,它将被传递到 env[‘QUERY_STRING’]。
为了与 HTTP/1.1 兼容,它们必须向 start_response() 传递“Content-Length”标题或“Transfer-Encoding=chunked”标题并分块内容。如果不这样做,响应将自动回退到 HTTP/1.0,并且连接将被强制关闭。
为了简化这些微型应用的创建,存在一个装饰器(Products.ZServerViews.base import TextView),它可以包装只接受 env 参数的函数,并返回一个单个的 unicode 字符串。这个装饰器将处理所有与该响应相关的 WSGI 交互。
查看 Products.ZServerViews.tests.common.current_thread_id_zserver_view 以获取示例。
变更日志
0.2.0 (2013-01-24)
将 ViewError 的消息设置为强制参数。它可以空着,但许多 HTTP 错误代码在响应中需要正文,因此空正文不再是默认值 [leorochael]
增加了一些 Python 2.4/Zope 2.10 兼容性(异常不是新式类) [leorochael]
0.1.1 (2013-01-18)
在清单中包含 .rst 文件 [leorochael]
0.1.0 (2013-01-18)
初始发布
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
Products.ZServerViews-0.2.0.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f2d7ce9f424b5352a45a60a8659a7fb519cef30ed8ac4182a5f0752f5088009 |
|
MD5 | dcff2636e8bebc5ba6a49e4341249203 |
|
BLAKE2b-256 | 51b982576a827b1c16b3c92d841c8fd52a59df846da8166132ea7c4290d62c4c |