跳转到主要内容

为直接在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 应用,这意味着它们接受 envstart_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 (21.0 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面