Python Paste Deployment
来源:互联网 发布:linux 黑客工具 编辑:程序博客网 时间:2024/06/05 23:42
本文参照着官方文档编写,官网地址:点击打开链接
什么是Paste Deployment
Paste Deployment是用来发现和配置WSGI的系统.对于WSGI使用者来说,它提供了简单的方法(loadapp)通过配置文件来启动WSGI应用.对于WSGI的开发者来说,只需要给自己的应用提供一套简单的入口点即可.
安装
$ sudo pip install PasteDeploy
配置文件详解
一个配置文件分为不同的section,section的声明如下:[type:name],第一部分是section的类型(type),第二部分是名字(name),通常来说type有app,composite,filter,pipeline,每个section内容都是形如key=value类型.其中,#是注释符.
先来看一个典型的配置文件内容:
[composite:main]use = egg:Paste#urlmap/ = home/blog = blog/wiki = wiki/cms = config:cms.ini[app:home]use = egg:Paste#staticdocument_root = %(here)s/htdocs[filter-app:blog]use = egg:Authentication#authnext = blogapproles = adminhtpasswd = /home/me/users.htpasswd[app:blogapp]use = egg:BlogAppdatabase = sqlite:/home/me/blog.db[app:wiki]use = call:mywiki.main:applicationdatabase = sqlite:/home/me/wiki.db下面详细说说每个section
[composite:main]use = egg:Paste#urlmap/ = home/blog = blog/cms = config:cms.ini中括号的内容为声明,该段声明了一个名字为main的composite类型的section,下面的都是key=value的具体配置,composite类型将会根据URL把请求分发到不同的WSGI应用.use = egg:Paste#urlmap表示使用Paste库中urlmap应用,urlmap是一个通用的composite应用,它的作用是根据URL中前缀把请求分发到不同的WSGI应用,类似与路由的功能.
此外,该配置文件中还有home,blog,wiki和config:cms.ini应用.其中config:cms.ini应用是调用其他配置文件cms.ini,该配置文件中可能定义了多个应用.
接着将下一个section
[app:home]use = egg:Paste#staticdocument_root = %(here)s/htdocsapp类型的section声明的是一个具体的应用,调用的module由use中值指定.在home这个应用中,use = egg:Paste#static,它的作用是显示静态的页面,它接收一个配置项:document_root,值是从全局配置[DEFAULT]提取,方法是使用变量替换,形如:%(var_name)s的形式.
然后是:
[filter-app:blog]use = egg:Authentication#authnext = blogapproles = adminhtpasswd = /home/me/users.htpasswd[app:blogapp]use = egg:BlogAppdatabase = sqlite:/home/me/blog.dbfilter-app类型表示你把一个过滤器应用在一个应用上,use是使用的代码,next指定的是被应用过滤器过滤的app.所以这个section的意思是将过滤器blog应用在应用blogapp上.
最后
[app:wiki]use = call:mywiki.main:applicationdatabase = sqlite:/home/me/wiki.db这个section和之前的最大的不同在于,它直接指定了执行的函数而不是使用Egg的入口点.use的值包含两个部分,它们以冒号分隔,左边的部分module的全名,右边是变量路径,它是module的一部分,在这里左边是mywiki.main,右边是application.
你可以在一个配置文件中指定多个应用,每个应用在其各自的段中,即使只有一个app,也要将其写到section中去.
指定运行application的python代码有两种:
第一种:指向其他的URI或者name
[app:myapp]use = config:another_config_file.ini#app_name# or any URI:任意的URI[app:myotherapp]use = egg:MyApp# or a callable from a module:某个模块中的可调用[app:mythirdapp]use = call:my.project:myapplication# or even another section:其他的section[app:mylastapp]use = myotherapp
第二种:直接指向实现代码
[app:myapp]paste.app_factory = myapp.modulename:app_factory这种方式key=value中的key是protocol,告诉paste deploy即将加载的类型,在这个例子中是app_factory,是一个应用工厂方法,value是具体加载的模块和方法.
全局配置[DEFAULT]
有些应用需要读取某些固定的信息,这些信息便存在与全局配置中,[DEFAULT]段是大小写敏感的.此外,在应用中也能修改全局配置的值.
filter
作用于WSGI应用上,以app为参数,返回过滤后的应用.例如:
[app:main]use = egg:MyEggfilter-with = printdebug[filter:printdebug]use = egg:Paste#printdebug# and you could have another filter-with here, and so on...在应用main中,filter-with指定printdebug为其filter,同样在filter printdebug中也可以使用filter-with指定其filter,从而将处理延续下去.
filter-app
filter-app也是用来处理应用,是filter的不同写法,在前面的例子中涉及到,不再举例
pipiline
pipeline实际上是多个filter处理一个应用.pipeline便于对一个应用添加多个过滤器.例如
[pipeline:main]pipeline = filter1 egg:FilterEgg#filter2 filter3 app[filter:filter1]...这就在app前指定了三个filter.
1 0
- Python Paste Deployment
- python WSGI+Paste Deployment+oslo.config综合运用
- wsgiref+Paste Deployment的使用
- Openstack之paste deployment与代码调用
- Python Paste.deploy 笔记
- Python Paste.deploy 笔记
- Python Paste deploy
- python paste deploy
- Python Paste.deploy 笔记
- Paste deploy &Python
- Python paste.deploy 笔记
- Python Paste.deploy 笔记
- Python Paste.deploy 笔记
- Python Paste 学习笔记
- python中的paste deploy
- Paste Deployment简介以及cinder-api-paste.ini的解析(1)
- Paste Deployment简介以及cinder-api-paste.ini的解析(2)
- Python.Paste指南之Deploy
- Class.isAssignableFrom()和instanceOf关键字
- [x-Code7新功能之四]Core Location和MapKit框架练习
- 刷新例子
- TransR/CTransR论文剩余部分:元组分类,文本关系抽取,结论
- hdoj 5665 Lucky 【水题】
- Python Paste Deployment
- 数据结构—排序
- blog 迁移
- JAVA--浅谈线程
- Maven教程:Maven Pom.xml文件详细解释
- Android 处理窗口控件大小,形状,像素等工具
- iOS开发-- 创建podspec文件,为自己的项目添加pod支持
- hdu 1875
- C#界面设计之通用对话框的使用