在IIS服务器上以CGI方式运行Python脚本的教程


Posted in Python onApril 25, 2015

由于接触到Python Web开发,正好把最简单的CGI方式研究了一下,话说在Windows下配置Python的Web开发还真的蛮麻烦的,Linux下配置倒挺容易,正好微软有技术文章《Using Python Scripts with IIS》介绍了这些内容,此文介绍了两种方法,一是使用ASP引擎来运行Python脚本,这个可能需要用到ActivePython,当然ASP技术已经过时了,我今天就简单介绍下CGI模块运行方式。

编写简单的支持CGI的Python脚本(本文介绍3.2版本的Python):

print("Status: 200 OK")
print("Content-type: text/html")
print() # 打印一行空白行,用于分隔HTTP Header和正文
 
print("<h1>Hello World!</h1>")

这样就可以了,大家可以猜出CGI是将标准输出流重新定向到HTTP输出流来实现网页或者数据传输的。

当然这个在IIS中是不能直接运行的,我们需要配置一下,打开Internet 信息服务(IIS)管理器界面,选择“处理程序映射”。

在IIS服务器上以CGI方式运行Python脚本的教程

在接下来出现的界面右侧选择“添加模块映射”。

IIS7添加模块映射

在IIS服务器上以CGI方式运行Python脚本的教程

假设我们的Python 3.2安装于C:\Python32,那么可以向下图这样填写:

在IIS服务器上以CGI方式运行Python脚本的教程

然后点击确定,在接下来出现的对话框选择“是”。

在IIS服务器上以CGI方式运行Python脚本的教程

好了,我们的配置完成了,重启一下IIS,然后赶快试试刚才的代码吧。可能有人会抱怨,用CGI编写网页一旦报错调试会比较麻烦,比如报下面的错误:

HTTP 错误 502.2 - Bad Gateway

指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。它实际返回的头是“Traceback (most recent call last): File "E:\projects\test.py", line 3, in <module> 1/0 ZeroDivisionError: division by zero ”。

其实我们只需要在最开始引入import cgitb; cgitb.enable()就可以了,就像下面这样:

import cgitb; cgitb.enable()
print("Status: 200 OK")
print("Content-type: text/html")
print() # 打印一行空白行,用于分隔HTTP Header和正文
 
print("<h1>Hello World!</h1>")

这样一旦出错,就会以友好的方式将错误输出来。

在IIS服务器上以CGI方式运行Python脚本的教程

对于表单的处理,可以参考import cgi模块(cgi.FieldStorage),网上有很多此方面的介绍,我就不多说了,Enjoy it!

Python 相关文章推荐
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python实现的栈(Stack)
Jan 26 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 #Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 #Python
Python实现单词拼写检查
Apr 25 #Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 #Python
使用PDB简单调试Python程序简明指南
Apr 25 #Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 #Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 #Python
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
php格式文件打开的四种方法
2018/02/24 PHP
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
js实现返回顶部效果
2017/03/10 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python多进程控制学习小结
2018/10/31 Python
python与字符编码问题
2019/05/24 Python
Python识别html主要文本框过程解析
2020/02/18 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Python如何发送与接收大型数组
2020/08/07 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
公司离职证明范本
2014/01/13 职场文书
认识深刻的检讨书
2014/02/16 职场文书
赡养老人协议书
2014/04/21 职场文书
劳动竞赛口号
2014/06/16 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
毕业感言怎么写
2015/07/31 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
python必学知识之文件操作(建议收藏)
2021/05/30 Python