在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实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python实现随机选择元素功能
Sep 14 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
使用Python实现NBA球员数据查询小程序功能
Nov 09 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
pandas取dataframe特定行列的实现方法
May 24 Python
分享Python获取本机IP地址的几种方法
Mar 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
javascript instanceof,typeof的区别
2010/03/24 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
js加强的经典分页实例
2013/03/15 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
python字典get()方法用法分析
2015/04/17 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python中常见的异常总结
2018/02/20 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
教育系毕业生中文求职信范文
2013/10/06 职场文书
毕业生求职简历中的自我评价
2013/10/18 职场文书
工商学院毕业生自荐信
2013/11/12 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
一分钟演讲稿
2014/04/30 职场文书
2014年营销工作总结
2014/11/22 职场文书
个人年终总结怎么写
2015/03/09 职场文书
python爬虫selenium模块详解
2021/03/30 Python
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python