当前位置: 首页 > 工具软件 > mod_python > 使用案例 >

26. Python脚本学习笔记二十六 mod_python

马奇略
2023-12-01

26. Python脚本学习笔记二十六 mod_python

本篇感言:“人生幸福三诀:不要拿自己的错误来惩罚自己;不要拿自己的错误来惩罚别人;不要拿别人的错误来惩罚自己。有了这三条,人生就不会太累了…… ”

                  上篇看了PYTHON在CGI的使用,我们来看下mod_python模块,该模块是Apache网络服务器的扩展。Mod_python可以让python解析器直接成为Apache的一部分。提供了在Python中编写Apache处理程序的功能,而且可以访问丰富的API,深入Apache内核。

                 

 

1.  安装mod_python

http://archive.apache.org/dist/httpd/modpython/win/3.3.1/连接中进行下载。

或者在如下链接中下载,蛤蟆已经上传到了CSDN处。

http://download.csdn.net/detail/notbaron/8921217

然后双击安装。

                  此时还需要进行两处配置。

在httpd.conf中

添加如下代码,加载模块:

LoadModule python_module modules/mod_python.so

 

 

 

2.  CGI处理程序

使用CGI处理程序而不使用普通CGI的主要原因是性能。

在httpd.conf中

添加如下代码,加载模块:

<Directory />

       SetHandler mod_python

       PythonHandler mod_python.cgihandler

       PythonDebug On

</Directory>

 

在htdocs文件中创建test.py如下:

def index(req):

       req.write("hello,world!")

       return

然后执行

http://127.0.0.1/test.py

输出如下:

可能如下以py结尾,如蛤蟆所用。

3.  PSP处理程序

用过PHP 超文本预处理程序, MSASP活动页面, JSP JAVA服务器页面,就对PSP Python服务器页面不会太陌生。

在httpd.conf中修改如下:

<Directory />

       AddHandler mod_python.psp

       SetHandler mod_python

                     PythonHandler mod_python.psp

       PythonDebug On

</Directory>

服务器会把扩展名为.psp的文件看做PSP文件。

                  Psp123.psp示例如下:

<%

from random import choice

adjectives = ['beautiful', 'cruel']

%>

<html>

 <head>

   <title>Hello</title>

 </head>

 <body>

 <p>Hello, <%=choice(adjectives)%> world. My name is Mr.Gumby.</p>

 </body>

</html>

然后在IE中输入:

http://127.0.0.1/psp123.psp

输出如下:

<%

from random import choice

adjectives = ['beautiful', 'cruel']

%>

<html>

 <head>

   <title>Hello</title>

 </head>

 <body>

 <p>Hello, <%=choice(adjectives)%> world. My name is Mr.Gumby.</p>

 </body>

</html>

输出如下:

4.  发布处理程序

其实mod_python真正得到认可的原因是可以让程序员比CGI脚本更有趣的环境中进行Python开发。

在httpd.conf中设置如下:

<Directory />

      AddHandler mod_python .py

      SetHandler mod_python

                     PythonHandler mod_python.publisher

      PythonDebug On

</Directory>

这样可以把以 py结尾的文件当做python 脚本运行。

示例:

from sha import sha

 

__auth_realm__ = "A simple test"

 

def __auth__(req, user, pswd):

    return user =="gumby" and sha(pswd).hexdigest() == \

   '17a15a277d43d3d9514ff731a7b5fa92dfd37aff'

 

def __access__(req, user):

    return True

 

def index(req, name="world"):

    return"<html>Hello, %s!</html>" % name

使用了sha 模块,避免在普通文本中存储密码。密码是goop.

正确密码的摘要信息会和用户给出的密码的摘要信息对比

 

输出如下:

需要输入用户名和密码

用户名:gumby

密码:goop

 

5.  网络应用程序

CGI机制和mod_python 工具包是进行网络应用程序开发的非常基础的工具。如果开发更复杂的系统,需要使用网络应用程序框架。

常用的网络应用程序的框架如下:

一些概念如下:

5.1      RSS

简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。[1] RSS可以是以下三个解释的其中一个: Really SimpleSyndication;RDF (Resource Description Framework) Site Summary; Rich SiteSummary。但其实这三个解释都是指同一种Syndication的技术。

 

5.2      XML-RPC

 

XML-RPC的全称是XML Remote Procedure Call,即XML(标准通用标记语言下的一个子集)远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。

 

5.3      SOAP

简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 类似资料: