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
然后执行
输出如下:
可能如下以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中输入:
输出如下:
<%
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上交换结构化的和固化的信息。