Python Paste Deployment
2016-04-21 17:18
417 查看
本文参照着官方文档编写,官网地址:点击打开链接
什么是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#static document_root = %(here)s/htdocs [filter-app:blog] use = egg:Authentication#auth next = blogapp roles = admin htpasswd = /home/me/users.htpasswd [app:blogapp] use = egg:BlogApp database = sqlite:/home/me/blog.db [app:wiki] use = call:mywiki.main:application database = 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#static document_root = %(here)s/htdocsapp类型的section声明的是一个具体的应用,调用的module由use中值指定.在home这个应用中,use = egg:Paste#static,它的作用是显示静态的页面,它接收一个配置项:document_root,值是从全局配置[DEFAULT]提取,方法是使用变量替换,形如:%(var_name)s的形式.
然后是:
[filter-app:blog] use = egg:Authentication#auth next = blogapp roles = admin htpasswd = /home/me/users.htpasswd [app:blogapp] use = egg:BlogApp database = sqlite:/home/me/blog.dbfilter-app类型表示你把一个过滤器应用在一个应用上,use是使用的代码,next指定的是被应用过滤器过滤的app.所以这个section的意思是将过滤器blog应用在应用blogapp上.
最后
[app:wiki] use = call:mywiki.main:application database = 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:MyEgg filter-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.
相关文章推荐
- python Queue模块
- python 里面的 client_sender
- Python目录操作
- Python文件基本操作
- Python文件操作
- Python中OS模块
- python安装依赖modules pysnmp pyasn1.type pexpect configparser
- 简单Python脚本实现数据导出Excel格式的尝试
- 单独的 python 脚本文件使用 django 自带的 model
- 【原】Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令
- python os.listdir按文件存取时间顺序列出目录
- 手机归属地及卡类型信息接口(python版)
- Python中的pandas
- python os.listdir按文件存取时间顺序列出目录
- spark-submit python 程序,"/home/.python-eggs" permission denied 问题解决
- Python 半自动登录知乎-验证码需要识别
- python使用qq服务器发送邮件
- python使用qq服务器发送邮件
- python 实验5 字符串练习(一)
- Python学习笔记06