blueprint

微服务构建持久API的7大规则

丶灬走出姿态 提交于 2020-07-27 13:04:01
前言 近年来,微服务架构发展迅速,SparkPost就是早期落地微服务架构公司之一,他们发现落地微服务过程中,不光需要考虑服务发现、服务注册、服务调用跟踪链等等架构问题,也需要重视微服务API的变更管理。微服务的一大特性就是独立发布,快速迭代,但前提是足够稳定,他们在使用微服务构建API的过程中就遇到很多问题: 1. 客户(微服务使用方)经常反馈API 升级变更后不可用,有时影响范围不可控,导致该微服务上线延期,甚至线上故障,违背了微服务初衷 2. API参数变化或返回结果变化而导致客户端行为不一致,依赖客户端需要大量重构,团队不能专注在创新型工作 3. API 易用性差, 使用方技术栈不统一,各自进行API抽象及封装,容易出错 4. 缺少文档及使用引导,需要大量支持工作 5. 闭门造车,产出微服务往往不能满足需求,运行一段时间就会逐渐废弃 SparkPost经过多年的探索与实践,总结了大量最佳实践,指导他们构建持久稳定的微服务API。现如今,它们的API被成千上万的客户使用,包括Pinterest、Zillow和Intercomto,每月发送超过150亿封电子邮件。 在这篇文章中,我将回顾几个选择和最佳实践。 七大原则 一、Restful是最好的,但要实用,不需要学究式 首先,也是最重要的一步,我们采取的步骤是决定使用REST作为API

Django和Flask这两个框架对比

好久不见. 提交于 2020-05-04 10:20:32
Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中。 Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前不用花费大量时间在选择应用的基础设施。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。 Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。 一、整体设计方面 首先,两者都是非常优秀的框架。整体来讲,两者设计的哲学是区别最大的地方。 Django提供一站式的解决方案,从模板、ORM、Session、Authentication等等都分配好了,app, admin后台生成, 使用非常方便. Flask只提供了一些核心功能,非常简洁优雅。它是一个微框架,其他的由扩展提供,但它的blueprint使它也能够很方便的进行水平扩展。 二、路由设计

Flask最强攻略

有些话、适合烂在心里 提交于 2020-05-04 08:00:00
前不久刚刚认识过了SQLAlchemy, 点击这里复习一下 当 Flask 与 SQLAlchemy 发生火花会怎么样呢? Flask-SQLAlchemy就这么诞生了 首先要先安装一下Flask-SQLAlchemy这个模块 pip install Flask-SQLAlchemy 然后你要下载一个干净的Flask项目 点击下载 接下来基于这个Flask项目,我们要加入Flask-SQLAlchemy让项目变得生动起来 1.加入Flask-SQLAlchemy第三方组件 1 from flask import Flask 2 3 # 导入Flask-SQLAlchemy中的SQLAlchemy 4 from flask_sqlalchemy import SQLAlchemy 5 6 # 实例化SQLAlchemy 7 db = SQLAlchemy() 8 # PS : 实例化SQLAlchemy的代码必须要在引入蓝图之前 9 10 from .views.users import user 11 12 13 def create_app(): 14 app = Flask( __name__ ) 15 16 # 初始化App配置 这个app配置就厉害了,专门针对 SQLAlchemy 进行配置 17 # SQLALCHEMY_DATABASE_URI 配置

flask-login 功能扩展 flask-login-multi

懵懂的女人 提交于 2020-04-27 18:26:19
手头开发一个登录项目,分user 和admin 表,需要分别登录前后台,flask 的扩展flask-login 已有的功能不能满足需要 所以打算研究一下源代码,扩展一下功能。 项目 user 和admin 两个模块,分别用于用户中心和管理后台区分。 所以有了思路,flask-login里面的session用endpoint的名字分别记录 user 和admin 的登录状态 完整模块 https://github.com/siaoynli/flask_login_multi pipy地址 https://pypi.org/project/Flask-Login-Multi/ 安装好 flask-login 和 flask-login-multi pip install flask_login pip install flask_login_multi 1.创建app,主要代码 from flask import Flask from flask_login_multi.login_manager import LoginManager app=Flask(__name__) login_manager = LoginManager(app) #用于各个蓝图跳转登录页的 endpoint login_manager.blueprint_login_views = { 'user':

flask 之(四) --- 扩展|缓存|会话

北慕城南 提交于 2020-04-27 18:21:36
扩展 蓝图内置扩展   (实现的是路由的拆分) 1 ''' ----------- app.py ------------- ''' 2 from flask import Flask 3 from users_views import blue1 4 from orders_views import blue2 5 6 app = Flask( __name__ ) 7 8 # 路由注册 9 app.register_blueprint(blueprint= blue1) 10 app.register_blueprint(blueprint= blue2) 11 12 13 if __name__ == ' __main__ ' : 14 app.run() 1 ''' ------------ users_views.py --------------- ''' 2 from flask import Blueprint 3 # blue1 的设置(名字,导入的名字, 前缀名称 ) 4 blue1 = Blueprint( " blue1 " , __name__ , url_prefix= " /users " ) 5 6 # 用blue1设置路由,用前缀名字区分相同名字的路由:http://127.0.0.1:5000/users/ 7 @blue1.route( " /

(2)PyCharm开发Flash项目之蓝图构建

独自空忆成欢 提交于 2020-04-27 18:19:09
下面通过在PyCharm开发工具中创建一个简单的Flask项目来体会一下Flask的蓝图构建(Blueprint)。 何谓蓝图:在Flask中蓝图就在大型应用中,将不同功能的模块(module)分开管理,主要起到让应用模块化的作用。 一、创建Flask工程并安装Flask 刚创建工程之后的目录,开发工具自动创建了虚拟环境: 安装Flask依赖(略): 二、创建基础目录 先创建一个package,作为整个项目的根目录(注意创建时选Python Package,而不是选Directory), 创建Python Package会自动生成__init__.py文件,而创建Directory不会生成: 创建一个名为app的包: 在app包下自动生成一个__init__.py文件: 基本目录结构解释: 最终的目录结构如下: 三、构建蓝图 (1)home/__init__.py文件内容: 1 # coding:utf8 2 from flask import Blueprint 3 4 home = Blueprint( " home " , __name__ ) 5 6 import app.home.views (2)admin/__init__.py文件内容: 1 # coding:utf8 2 from flask import Blueprint 3 4 admin =

flask基础之app初始化(四)

∥☆過路亽.° 提交于 2020-04-27 18:01:23
https://www.cnblogs.com/cwp-bg/p/9917203.html 前言 flask的核心对象是Flask,它定义了flask框架对于http请求的整个处理逻辑。随着服务器被启动,app被创建并初始化,那么具体的过程是这样的呢? 系列文章 flask基础之安装和使用入门(一) flask基础之jijia2模板使用基础(二) flask基础之jijia2模板语言进阶(三) 一个最基本web应用的flask代码 from flask import Flask import os # 创建app对象 app = Flask(__name__,template_folder= 'static/html') # 加载配置文件 app.config[ 'SECRET_KEY'] = '123' # 加载蓝图 app.register_blueprint(rest, url_prefix= '') # 加载请求钩子 @rest.before_request def rest_test (): print( 'this is a test') pass # 定义api处理视图 @app.route('/test1') def test (): return 'OK' @定义错误处理逻辑 @app.errorhandler(400) def handle_errer

laravel使用Schema创建数据表

北城以北 提交于 2020-04-27 02:27:34
1、简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的schema构建器结对从而可以很容易地构建应用的数据库表结构。如果你曾经告知小组成员需要手动添加列到本地数据库结构,那么这正是数据库迁移所致力于解决的问题。 Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、平滑的API。 2、生成迁移 使用 Artisan 命令make:migration来创建一个新的迁移: php artisan make:migration create_users_table 新的迁移位于database/migrations目录下,每个迁移文件名都包含时间戳从而允许 Laravel 判断其顺序。 –table和–create选项可以用于指定表名以及该迁移是否要创建一个新的数据表。这些选项只需要简单放在上述迁移命令后面并指定表名: php artisan make:migration create_users_table –create=users php artisan make:migration add_votes_to_users_table –table=users 如果你想要指定生成迁移的自定义输出路径,在执行make

Flask开发微电影网站(一)

倾然丶 夕夏残阳落幕 提交于 2020-04-22 04:14:32
1.用到的Flask知识 1.使用整形,浮点型,路径型,字符串型下正则表达式路由转化器 2.使用GET与POST请求,上传文件,cookie获取与响应,404处理 3.使用模板自动转义,定义过滤器,定义全局上下文处理器,Jinja2语法,包含,继承,定义宏 4.使用flask-wtf定义表单模型,字段类型,字段验证,视图处理表单,模板使用表单 5.使用flask-sqlachemy定义数据库模型,对数据进行增删查改,数据迁移 6.使用蓝图优化项目结构,实现微电影网站前台与后台业务逻辑 7.flask部署,安装编译Nginx,安装Mysql服务以及通过Nginx反向代理对视频流媒体限制下载速率,限制单个IP能发起的播放连接数 2.用到的视频技术 1.jwplayer播放器插件 2.视频限速限IP访问 3.FLV,MP4视频格式支持 4.Nginx点播实现 3.环境说明: 开发系统:Win 7(与数据库虚拟机以NAT方式连接,IP地址为:192.168.81.3) python版本:3.6.3 开发工具:pycharm 专业版 数据库:MariaDB 5.5.56-Server 数据库所在系统:CentOS 7.4(IP地址为:192.168.81.10) 4.项目模型设计 使用Flask的蓝图Blueprint规划项目结构 使用Flask

网站后端.Flask.实战-社交博客开发-创建认证蓝图?

廉价感情. 提交于 2020-03-12 19:36:34
1.不同的程序功能,推荐使用不同的蓝图,蓝图本身可以包含基于此蓝图对象路由/视图/表单/模版/静态资源/错误处理等,这时保持代码整洁有序的好方法 FlaskWeb/app/auth/__init__.py #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # OsChina: http://my.oschina.net/pydevops/ # Purpose: # """ from flask import Blueprint auth = Blueprint('auth', __name__, template_folder='templates', static_folder='static') from . import views, errors 说明:auth蓝图保存在同名包中,在包的构造文件创建蓝本对象,再导入路由和错误处理,template_folder='templates',设置独立模版目录, static_folder='static',设置独立静态文件目录,默认蓝图会从程序templates/static目录下寻找模版和静态资源,如果不存在则会从蓝图下独立目录中寻找 FlaskWeb/app/auth/views.py #!/usr/bin/env python #