在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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
python如何实现一个刷网页小程序
Nov 27 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
postman和python mock测试过程图解
Feb 22 Python
Django框架获取form表单数据方式总结
Apr 22 Python
python3.4中清屏的处理方法
Jul 06 Python
学习Python需要哪些工具
Sep 04 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
python神经网络 使用Keras构建RNN训练
May 04 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版(1)
2006/10/09 PHP
PHP对字符串的递增运算分析
2010/08/08 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
python多线程同步实例教程
2019/08/11 Python
softmax及python实现过程解析
2019/09/30 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
pytorch SENet实现案例
2020/06/24 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
银行会计业务的个人自我评价
2013/11/02 职场文书
高级工程师岗位职责
2013/12/15 职场文书
总经理岗位职责范本
2014/02/02 职场文书
期末评语大全
2014/05/04 职场文书
2014年收银工作总结
2014/11/13 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
2015新员工工作总结范文
2015/10/15 职场文书