python 64式: 第18式、python项目通用rest api框架搭建与编写

本文介绍了如何使用PasteScript创建Python项目,并搭建一个通用的REST API框架。内容包括安装PasteScript,创建项目,修改setup.py和setup.cfg文件,添加requirements.txt,构建API结构,使用pecan和wsme进行路由分发和请求处理,以及项目的安装和验证。最后,还涉及了配置文件的生成。
摘要由CSDN通过智能技术生成

1 用PasteScript创建项目
1.1 安装PasteScript
安装命令:
pip install PasteScript

查看可用的模板
[root@localhost test_project]# paster create --list-templates     
Available templates:
  basic_package:  A basic setuptools-enabled package
  paste_deploy:   A web application deployed through paste.deploy

1.2 创建项目
paster create -t basic_package myproject
回答一系列问题后,项目生成

1.3 查看生成的项目目录结构
[root@localhost test_project]# tree myproject
myproject
|-- myproject
|   `-- __init__.py
|-- myproject.egg-info
|   |-- dependency_links.txt
|   |-- entry_points.txt
|   |-- not-zip-safe
|   |-- PKG-INFO
|   |-- SOURCES.txt
|   `-- top_level.txt
|-- setup.cfg
`-- setup.py


2 修改setup.py,采用pbr部署
2.1 将setup.py中内容直接替换为如下内容
import setuptools

setuptools.setup(
    setup_requires=['pbr'],
    pbr=True)

2.2 修改setup.cfg内容为如下内容
[metadata]
name = myproject
version = 1.0
summary = myproject
description-file =
    README.rst
author = me
author-email = 
classifier =
    Intended Audience :: Developers
    Programming Language :: Python :: 2.7

[global]
setup-hooks =
    pbr.hooks.setup_hook

[files]
packages =
    myproject
data_files =
    /etc/myproject = etc/myproject/*
    /var/www/myproject = etc/apache2/app.wsgi
    /etc/httpd/conf.d = etc/apache2/myproject.conf

[entry_points]
wsgi_scripts =
    myproject-api = myproject.api.app:build_wsgi_app

oslo.config.opts =
    myproject = myproject.opts:list_opts

分析:
一 pbr和setup.cfg
1) pbr是setuptools的插件,所以你必须使用setuptools,然后调用setuptools.setup()函数
2) pbr只需要最小化的setup.py 文件,跟普通的使用setuptools的项目相比。这是因为设置都在setup.cfg里面
3) setuptools的setup函数来进行设置时,如果与位于setup.cfg中的信息产生冲突,则setup.cfg则优先。
4) setup.cfg文档。这个文档像ini 文档。它基于项目distutils2的setup.cfg文件设置
5) setup.cfg文件中有几个段落:
metadata
files
entry_points
pbr

二 files段落定义了包中的文件位置,有三个基本的设置键:packages,namespace_packages,以及data_files.
1) packages: 指定需要安装的包的列表,若packages没有指定,默认为metadata段落中的name的值

2) data_files: 列出了需要被安装的文件。格式是缩进后跟上键值对

例如aodh的setup.cfg中配置
[files]
packages =
    aodh
data_files =
    etc/aodh = etc/aodh/*

上述例子表明: etc/aodh/*中的文件最终会被拷贝待/etc/aodh文件夹中


三 entry_points
作用:定义当前项目做为第三方python的库可以被其他python程序调用的lib进入点
1) console_scripts控制脚本
格式:
console_scripts = 
    脚本名称 = 模块:可导入对象
例子:
console_scripts =
    aodh-evaluator = aodh.cmd.alarm:evaluator
解释:
这里会产生一个aodh-evaluator的脚本,执行aodh.cmd.alarm中的evaluator
函数。

2) 插件
格式:
命名空间 =
  插件名称 = 模块:可导入对象
例子:
ceilometer.compute.virt = 
    libvirt = ceilometer.compute.virt.libvirt.inspector:LibvirtInspector

pbr参考
https://www.cnblogs.com/yasmi/p/5183423.html
https://docs.openstack.org/pbr/latest/
https://docs.openstack.org/pbr/latest/user/using.html

3 添加requirements.txt文件
该文件和setup.py在同一个目录
添加内容如下:
pbr<2.0,>=0.11
pecan
WSME

解释:
添加requirements.txt是因为给项目添加所依赖的第三方库,
使得项目在安装过程中会安装requirements.txt中的库,从而
确保项目运行正常。


4 添加paste部署所需要的内容
具体在myproject目录下新建一个目录api
4.1 api目录下新增一个文件: __init__.py
里面不要填写任何内容

4.2 api目录下新增一个文件: api-paste.ini
向该文件中写入如下内容:
[composite:main]
use = egg:Paste#urlmap
/ = api

[app:api]
paste.app_factory = myproject.api.app:app_factory


4.3 api目录下新增一个文件: app.py
在该文件中写入如下内容:
#!/usr/bin/env pytho

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值