在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使用Tkinter显示网络图片的方法
Apr 24 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
tensorflow与numpy的版本兼容性问题的解决
Jan 08 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
MYSQL支持事务吗
2013/08/09 面试题
日语专业个人的求职信
2013/12/03 职场文书
运动会广播稿200字
2014/01/15 职场文书
铁路个人事迹材料
2014/01/30 职场文书
环境工程专业自荐信
2014/03/03 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
离职报告格式
2014/11/04 职场文书
杭白菊导游词
2015/02/10 职场文书
2016国培研修心得体会
2016/01/08 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
JS高级程序设计之class继承重点详解
2022/07/07 Javascript