CherryPy是基于Python设计的一款面向对象的HTTP框架,拥有web事务测量、SQL查询、错误信息捕获等,为开发试验系统或其他应用提供一个web管理界面。支持 Python 2.7+, 3.1+, PyPy, Jython 和 Android。需要的开发者可以下载!

软件特点
1、强大的配置系统
2、灵活的插件系统
3、内建缓存管理、会话管理、认证、静态文件支持等等诸多功能
4、完全可定制
5、可靠、兼容 HTTP/1.1、WSGI 线程池
6、可轻松同时在一台机器上创建多个服务
7、内建分析、测试和覆盖率工具
8、支持 Python 2.7+, 3.1+, PyPy, Jython 和 Android.
软件功能
1、事务
测量每个Web 事务的 handler 函数执行时间,对 Genshi, Jinja2Template or MakoTemplate 扩展模版库都提供详细的事务 trace。
2、SQL 查询
除了对数据库调用进行计时和计数,OneAPM 会自动拦截这些报错,并且会报出这些异常以及他们的堆栈跟踪轨迹,我们对任何兼容 DBAPI2 的数据库适配器都百分百支持。
3、错误信息
错误信息记录提供了那些会从 CheerPy 产生 500 报错的未捕获的异常。OneAPM 会自动拦截这些报错,并且会报出这些异常以及他们的堆栈跟踪轨迹,因此,用户可以很简单的修复这些在生产下比较容易被忽视的错误。
CherryPy安装配置教程
1.安装cherrypy:解压缩后到目录下运行安装目录(注:必须先安装python并把python目录加到环境变量中)C:\Documents and Settings\zheng>G:
G:\>cd sns/CherryPy-3.1.2G:\sns\CherryPy-3.1.2>python setup.py build
G:\sns\CherryPy-3.1.2>python setup.py install安装完毕就可以用了。
2.在G:\sns\CherryPy-3.1.2目录下创建一个hello.py的文件,输入下面简单的几行代码可以实现一个“Hello, World!”Application
import cherrypy
class HelloWorld(object):def index(self):
return "Hello World!"index.exposed = True
cherrypy.quickstart(HelloWorld())
3.回到命令行输入下面命令启动G:\sns\CherryPy-3.1.2>python hello.py
[16/Jan/2011:21:35:07] ENGINE Listening for SIGTERM.[16/Jan/2011:21:35:07] ENGINE Bus STARTING
CherryPy Checker:The Application mounted at '' has an empty config.
[16/Jan/2011:21:35:07] ENGINE Started monitor thread 'Autoreloader'.[16/Jan/2011:21:35:07] ENGINE Started monitor thread '_TimeoutMonitor'.
[16/Jan/2011:21:35:08] ENGINE Serving on 127.0.0.1:8080[16/Jan/2011:21:35:08] ENGINE Bus STARTED
4.在浏览器输入http://localhost:8080/ 访问可以看到下面内容:Hello World!
输入http://localhost:8080/index也访问到一样的内容5.把上面内容改为
import cherrypyclass HelloWorld(object):
def hello(self):return "hello"
def index(self):return "Hello World!"
hello.exposed = Trueindex.exposed = True
cherrypy.quickstart(HelloWorld())在浏览器中输入
http://localhost:8080/hello可以看到输出为hello
======================================
配置python环境变量G:\sns\CherryPy-3.1.2>python
'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。
默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量。此时不能在命令行直接使用python命令。1.首先需要在系统中注册python环境变量:假设python的安装路径为c:\python2.5,则修改我的电脑->属性->高级->环境变量->系统变量中的PATH为:
PATH=PATH;c:\python25
上述环境变量设置成功之后,就可以在命令行直接使用python命令。或执行"python *.py"运行python脚本了。
2.此时,还是只能通过"python *.py"运行python脚本,若希望直接运行*.py,只需再修改另一个环境变量PATHEXT:
PATHEXT=PATHEXT;.PY;.PYM
3.另外,在使用python的过程中,可能需要经常查看某个命令的帮助文档,如使用help('print')查看print命令的使用说明。默认安装的python无法查看帮助文档,尚需进行简单的配置:
在python安装目录下,找到python25.chm,使用hh -decompile .python25.chm将其反编译出来,然后将其所在的目录加入到上面提到的PATH环境变量中即可。
================================================
使用PyWin32将CherryPy应用安装为服务
# coding=cp936import cherrypy
import win32serviceutilimport win32service
import win32eventclass HelloWorld:
""" 请求句柄例子 """# 暴露对象
@cherrypy.exposedef index(self):
# 只做测试用,所以只返回简单内容return "Hello world!"
class MyService(win32serviceutil.ServiceFramework):"""NT 服务"""
# 服务名_svc_name_ = "CherryPyService"
# 服务显示名称_svc_display_name_ = "CherryPy Service"
def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)
# 创建一个事件self.stop_event = win32event.CreateEvent(None, 0, 0, None)
def SvcDoRun(self):cherrypy.root = HelloWorld()
# 更新配置,当使用配置文件时,必须为一个绝对路径cherrypy.config.update({
'global':{
'server.socketPort' : 81,'server.environment': 'production',
'server.logToScreen': False,'server.log_file': 'e:editlog.txt',
'server.log_access_file': 'e:editlog.txt','autoreload.on' : False,
'server.logTracebacks' : True}
})
# 设置 initOnly=Truecherrypy.server.start(initOnly=True)
win32event.WaitForSingleObject(self.stop_event,
win32event.INFINITE)
def SvcStop(self):self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
cherrypy.server.stop()win32event.SetEvent(self.stop_event)
if __name__ == '__main__':win32serviceutil.HandleCommandLine(MyService)
P.S.假设文件名为mysrv.py 则
x:>mysrv.py --显示所有可用命令选项
mysrv.py install--安装服务
mysrv.py start --启动服务
mysrv.py stop --停止服务
mysrv.py restart --就是restart,重启,更新代码用
mysrv.py remove --删除服务
再P.S.测试时候一定要注意防火墙,服务是自动拦截的(pythonservice.exe).偶就在这里出问题了~嘻嘻
用到的路径必须全为绝对路径,静态目录也是
安装好服务后,也可以使用net start/stop CherryPyService 来管理