it计算机]mod_python328中文手册内容摘要:

L_CONTENT 206 HTTP_MULTI_STATUS 207 HTTP_MULTIPLE_CHOICES 300 源码网整理: 源码网整理: HTTP_MOVED_PERMANENTLY 301 HTTP_MOVEDTEMPORARILY 302 HTTP_SEE_OTHER 303 HTTP_NOT_MODIFIED 304 HTTP_USE_PROXY 305 HTTP_TEMPORARY_REDIRECT 307 HTTP_BAD_REQUEST 400 HTTP_UNAUTHORIZED 401 HTTP_PAYMENT_REQUIRED 402 HTTP_FORBIDDEN 403 HTTP_NOT_FOUND 404 HTTP_METHOD_NOT_ALLOWED 405 HTTP_NOT_ACCEPTABLE 406 HTTP_PROXY_AUTHENTICATION_REQUIRED 407 HTTP_REQUEST_TIME_OUT 408 HTTP_CONFLICT 409 HTTP_GONE 410 HTTP_LENGTH_REQUIRED 411 HTTP_PRECONDITION_FAILED 412 HTTP_REQUEST_ENTITY_TOO_LARGE 413 HTTP_REQUEST_URI_TOO_LARGE 414 HTTP_UNSUPPORTED_MEDIA_TYPE 415 HTTP_RANGE_NOT_SATISFIABLE 416 HTTP_EXPECTATION_FAILED 417 HTTP_UNPROCESSABLE_ENTITY 422 HTTP_LOCKED 423 HTTP_FAILED_DEPENDENCY 424 HTTP_INTERNAL_SERVER_ERROR 500 HTTP_NOT_IMPLEMENTED 501 HTTP_BAD_GATEWAY 502 HTTP_SERVICE_UNAVAILABLE 503 HTTP_GATEWAY_TIME_OUT 504 源码网整理: 源码网整理: HTTP_VERSION_NOT_SUPPORTED 505 HTTP_VARIANT_ALSO_VARIES 506 HTTP_INSUFFICIENT_STORAGE 507 HTTP_NOT_EXTENDED 510 可以通过抛出 ,并将 HTTP错误码作为异常的参数。 例如: raise , 处理器可以通过 ()方法将文档发送到客户端。 客户端提交的数据可以通过 ()读取。 注意: Python*Handler所在的目录必须已经在 ,如果没有在 Directory配置段指定则不会在。 一个请求处理器的例子: from mod_python import apache def requesthandler(req): =39。 text/plain39。 (39。 Hello World!39。 ) return 过滤 (filter)处理器 过滤处理器可以改变服务器的输入和输出。 分两种:输入和输出的过滤。 现在 mod_python仅提供请求级别 (requestlevel)的过滤器,就是 HTTP的请求和回应体可以被过滤。 未来的 apache将会提供连接级别 (connectionlevel)的过 滤器。 过滤处理器接收一个 filter对象做参数,请求对象可经由此得出 ,但是所有的读写动作必须经由 filter的方法。 过滤器在读到 None时需要被关闭,代表流的结束。 过滤器的返回值将会被忽略,但可用()方法达到同样的效果。 过滤器必须一开始就注册为 PythonInputFilter或 PythonOutputFilter,然后添加到 apache的配置标志 Add/SetInputFilter或 Add/SetOutputFilter。 如下例子把所有 .py结尾文件 用 CAPITALIZE过滤器处理,如下是配置: PythonOutputFilter capitalize CAPITALIZE AddOutputFilter CAPTITALIZE .py 如下是文件 : from mod_python import apache 源码网整理: 源码网整理: def outputfilter(filter): s=() while s: (()) s=() if s is None: () 书写过滤器时应该注意到过滤器随时都会被调用。 过滤器无法控制数据的总量,也无法确定请求何时调用。 比如对于一个请求,过滤器可能会执行一次或五次,并无法知晓调用何时结束和先后顺序。 从一个 read操作返回的 EOS代表请求的结束。 过滤器也可能在子请求的递归调用中。 为避免数据多次被改变,经常的确保并不在子请求中,依靠。 连接 (connection)处理器 连接处理器处理连接到服务器的 TCP连接。 不同于 HTTP处理器,连接处理器接收 connection对象做参数。 连接处理器可以用于实现协议。 如下例配置: PythonConnectionHandler echo 实现文件 : from mod_python import apache def connectionhandler(conn): while 1: (()) return Apache内部 apache内部对 Python的接口也恰好叫做 apache,在 mod_python包。 提供了连接 apache内部的 重要功能,比如有用的函数,文档等 (request对象也提供访问 Apache内部的接口,但不在本节 )。 apache模块仅可作为 mod_python下的一个脚本来导入,因为它依赖于 mod_python内建的_apache模块。 最好按照如下导入: from mod_python import apache 模块定义了如下函数和对象,更多深入的信息查看 Apache文档。 函数 源码网整理: 源码网整理: log_error(message[,level,server]) Apache函数 ap_log_error()的接口, message是错误信息, level是如下值: APLOG_EMERG APLOG_ALERT APLOG_CRIT APLOG_ERR APLOG_WARNING APLOG_NOTICE APLOG_INFO APLOG_DEBUG APLOG_NOERRNO server是。 如果没有指定则写入到缺省的日志,否则写入到对应虚拟服务器的日志中。 当 server没有指定时,日志级别也无效,日志级别是 d在编译时指定的,经常为warn。 如果拥有请求 对象的引用,最好用 ,这样将会存入请求相关信息,如源 IP 等。 import_module(module_name[,autoreload=1,log=0,path=None]) mod_python的内部高级特性,用于在模块改变时自动重新载入模块。 module_name是模块名,可以包含点的包名。 autoreload标志查看包是否有所改变,如果改变则自动重新载入。 如果 log为 True则这个事件会记入日志。 path严格指定模块的位置。 例子: from mod_python import apache mymodule=(39。 mymodule39。 ,log=1) allow_methods([*args]) 用于设置。 ,对应 39。 Allow:39。 头。 可以在返回HTTP_NOT_IMPLEMENTED错误之前设置。 参数如下: M_GET M_PUT M_POST M_DELETE M_CONNECT 源码网整理: 源码网整理: M_OPTIONS M_TRACE M_PATCH M_PROPFIND M_PROPPATCH M_MKCOL M_COPY M_MOVE M_LOCK M_UNLOCK M_VERSION_CONTROL M_CHECKOUT M_UNCHECKOUT M_CHECKIN M_UPDATE M_LABEL M_REPORT M_MKWORKSPACE M_MKACTIVITY M_BASELINE_CONTROL M_MERGE M_INVALID exists_config_define(name) 确定 Apache是否存在一个 name配置。 比如 Apache定义了 DFOOBAR则如下测试为真 : (39。 FOOBAR39。 ) register_cleanup(handler[,data]) 注册一个清除行为,等同于 ()或 (),除非服务器或请求对象不需要。 config_tree() 返回服务器级 (serverlevel)配置树。 这些配置不包含 .htaccess 文件的标志。 返回的是副本,修改对配置没有效果。 server_root() 源码网整理: 源码网整理: 返回配置标志 39。 ServerRoot39。 的值。 make_table() 一个作废的函数,可用 table代替。 mpm_query(code) 允许查询 MPM 参数变量来处理线程。 返回值是如下三种常量之一: AP_MPMQ_NOT_SUPPORTED=0 指 MPM 支持线程或子进程 AP_MPMQ_STATIC=1 指 MPM 正在使用静态守护线程 AP_MPMQ_DYNAMIC=2 指 MPM 正在使用动态守护线程 code参数是如下值: AP_MPMQ_MAX_DAEMON_USED=1 最大允许使用的守护线程数量 AP_MPMQ_IS_THREADED=2 MPM 是否允许使用线程 AP_MPMQ_IS_FORKED=3 MPM 是否可用 fork生成子进程 AP_MPMQ_HARD_LIMIT_DAEMONS=4 编译时允许的最大守护进程数量 AP_MPMQ_HARD_LIMIT_THREADS=5 编译时允许最大线程数量 AP_MPMQ_MAX_THREADS=6 threads/child配置允许的最大线程数量 AP_MPMQ_MIN_SPARE_DAEMONS=7 最小剩余守护数 AP_MPMQ_MIN_SPARE_THREADS=8 最 小剩余线程数 AP_MPMQ_MAX_SPARE_DAEMONS=9 最大剩余守护数 AP_MPMQ_MAX_SPARE_THREADS=10 最大剩余线程数 AP_MPMQ_MAX_REQUESTS_DAEMON=11 每个守护最大允许请求数量 AP_MPMQ_MAX_DAEMONS=12 配置允许的最大守护数量 例如: if (): do something else: do something else 表格对象 (mp_table) class table([mappingorsequence]) 源码网整理: 源码网整理: 返回一个新的 mp_table表格对象。 mappingorsequence提供了表格的初始化数据。 表格对象是对 APR表格对象的包装 (wrapper)。 表格对象的行为 (behave)非常像词典 (还支持 以后的 in 操作符 ),但是有以下不同:  键和值都必须是字符串  键的查询不区分大小写  允许相同的键,即一个键对应一个列表的值 很多 apache的信息存储在表格中,如。 mod_python提供的所有表格对象都是真正 (actual)映射 (mapping)到 apache结构的,所以改变表格的值也会改变apache的表格。 除了 (in addition to)像词典一样的行为 (behavior)之外,表格对象还支持如下操作: add(key,val) 这个方法允许使用相同的键,这对重复的头很有用,比如 SetCookie:就需要。 这个功能从 开始提供。 请求对象 请求对象是映射到 apache的 request_rec 结构的对象。 当处 理器被调用时,会传递唯一个的一个参数就是请求对象。 可以为请求对象指定属性,用于在处理器之间通信。 如下是方法: add_mon_vars() 间接调用 ap_add_mon_vars()函数。 调用后, 会包含大量的 CGI信息。 add_handler(htype,handler[,dir]) 允许动态注册处理器。 htype是要添加的处理器的标志,如 39。 PythonHandler39。 ,但不可以是过滤器 (filter)或连接 (connection)。 handler是包含模块 名或函数名的处理器函数。 可选参数 dir是需要添加到 pythonpath环境变量的路径。 如果未指定目录,而且有同类型的处理器,则继承路径,否则用前一路径。 如果有 PythonPath标志存在,则。 通过这种方式添加的处理器生存期为这个请求。 为同一个类型添加多个处理器是很有用的,不过要注意避免死循环 (infinite loop)。 动态注册处理器是一种很有用的技术,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。