信息与通信]mod_python328中文手册内容摘要:

_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)。 动态注册处理器是一种很有用的技术,比如用于 PythonAuthenHandler,可以为不同的认证级别 指定不同的权限。 如: if manager: (PythonHandler,menu::admin) else: (PythonHandler,menu::basic) 注意,如果传递了一个无效处理器,则会在寻找处理器时发生异常。 allow_methods(methods[,reset]) 添加方法到。 这个列表将会允许传递,在头部指定HTTP_METHOD_NOT_ALLOWED或 HTTP_NOT_IMPLEMENTED返回到客户端。 注意 apache并不会对这些方法起作用。 这个列表仅仅用于构造头部。 实际的方法处理逻辑在处理器代码中提供。 methods是一个字符串列表,如果 reset设置为 1,则列表会被清空。 document_root() 返回 DocumentRoot设置 get_basic_auth_pw() 返回简单认证时的密码字符串 get_config() 返回包含 mod_python配置的表格对象的引用,用于当前请求,除了Python*Handler和 PythonOption(可 以通过 ()获得 )。 表格包含键,和值列表。 get_remote_host([type,str_is_ip]) 用于查询客户端的 DNS名和 IP地址。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。