Pecan
Pecan
Pecan框架的目标是实现一个采用对象分发方式进行URL路由的轻量级Web框架。它非常专注于自己的目标,它的大部分功能都和URL路由以及请求和响应的处理相关,而不去实现模板、安全以及数据库层,这些东西都可以通过其他的库来实现。关于Pecan的更多信息,可以查看文档。本文以,OpenStack的magnum项目为例来说明Pecan项目在实际中的应用,但是本文不会详细讲解Pecan的各个方面,一些细节请读者阅读Pecan的文档。
项目中的代码结构
使用Pecan框架时,,OpenStack项目一般会把API服务的实现都放在一个api目录下,比如magnum项目是这样的:
? ~/openstack/env/p/magnum git:(master) $ tree magnum/api
magnum/api
├── app.py
├── auth.py
├── config.py
├── controllers
│ ├── base.py
│ ├── __init__.py
│ ├── link.py
│ ├── root.py
│ └── v1
│ ├── base.py
│ ├── baymodel.py
│ ├── bay.py
│ ├── certificate.py
│ ├── collection.py
│ ├── container.py
│ ├── __init__.py
│ ├── magnum_services.py
│ ├── node.py
│ ├── pod.py
│ ├── replicationcontroller.py
│ ├── service.py
│ ├── types.py
│ ├── utils.py
│ └── x509keypair.py
├── expose.py
├── hooks.py
├── __init__.py
├── middleware
│ ├── auth_token.py
│ ├── __init__.py
│ └── parsable_error.py
├── servicegroup.py
└── validation.py
你也可以在Ceilometer项目中看到类似的结构。介绍一下几个主要的文件,这样你以后看到一个使用Pecan的,OpenStack项目时就会比较容易找到入口。
app.py 一般包含了Pecan应用的入口,包含应用初始化代码
config.py 包含Pecan的应用配置,会被app.py使用
controllers/ 这个目录会包含所有的控制器,也就是API具体逻辑的地方
controllers/root.py 这个包含根路径对应的控制器
controllers/v1/ 这个目录对应v1版本的API的控制器。如果有多个版本的API,你一般能看到v2等目录。
参考链接:
http://www.tuicool.com/articles/iMBN3eE(通过demo学习OpenStack开发所需的基础知识 -- API服务)
http://www.tuicool.com/articles/zEBbamQ(学习OpenStack开发(下))