Python项目Flask ipv6双栈支持改造

news2024/11/17 1:30:53

一、背景

在这里插入图片描述

  Flask 是一个微型的(轻量)使用Python 语言开发的 WSGI Web 框架(一组库和模块),基于Werkzeug WSGI工具箱/库和Jinja2 模板引擎,当然,Python的WEB框架还有:Django、Tornado、Webpy,这暂且不提。 Flask使用BSD授权。 Flask也被称为microframework(微框架),Flask 的目标是保持核心简单而又可扩展,即它采用了简单的核心,缺省情况下, Flask 不包含数据库抽象层、表单验证或者其他已有的库可以处理的东西,其他的功能可用Flask-extension增加:ORM、窗体验证工具、文件上传、各种开放式身份验证技术等就行Flask原生一样。由于这些特性,它使用简单,自由性强,可以帮助用户很方便得快捷搭建自己的web服务器,被广泛应用,尤其适合构建小到中型规模的Web应用。 另外,Flask支持RESTful ,Flask很容易使用RESTful API,可以轻松地创建RESTful Web服务。Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定,让开发者更专注于核心代码,随需扩展。下图是场景的一种Flask Web架构:

在这里插入图片描述
  现场业务场景中采用如上图类似的架构,也通过gunicorn管理Flask web项目,对外提供服务;但是集团要求,要全部实现ipv6(三级ipv6实现:浏览器内转三级功能,都完成支持ipv6);现场发现Flask web应用并没监听ipv6地址,Gunicore也未监听;那如何配置呢,最终实现IPv4/6双栈支持。
在这里插入图片描述

现场环境版本: Python3.6.3和2.7.18、Werkzeug (0.16.0)、tensorflow (1.6.0)、numpy (1.18.0)、wheel (0.33.6)
、wrapt (1.11.2)、setuptools (42.0.2)、six (1.13.0)、opencv-python (4.1.2.30)、pandas (0.25.3)、Jinja2 (2.10.3)、gunicorn (19.9.0)、gevent (1.3.5)、Flask (1.1.1)、Click (7.0)、backports.lzma (0.0.14)、

相关资源链接:jinja、Flask中文文档、Flask英文文档、python-docx、pandas、sourceforge、codingdict编程字典、pytorch中文、numpy中文、numpy文档、python3、Flask中文文档、Flask介绍、Flask快速指南、Flask GitHub、Flask三方文档、gunicorn配置指导、前端入门和进阶学习笔记、Flask官方文档

二、Flask框架及说明

2.1、相关概念回顾

WSGI:即Web服务器网关接口(WSGI), 它是Web服务器和Web应用程序之间通用接口的规范。已被采纳为Python Web应用程序开发的标准。WSGI将Web服务分成两个部分:服务器和应用程序。WGSI服务器只负责与网络相关的两件事:接收浏览器的HTTP请求、向浏览器发送HTTP应答;而对HTTP请求的具体处理逻辑,则通过调用WSGI应用程序进行。Python使用wsgi网关进行Web开发,flask基于wsgi网关,flask中实例的app,也称之为一个wsgi 应用。
在这里插入图片描述

WERKZEUG:它是一个WSGI工具包,实现了请求,响应对象和其他实用程序功能。 这可以在其上构建Web框架。 Flask框架使用Werkzeug作为其一个基础模块之一。

Jinja2:它是Python的流行模板引擎。 网页模板系统将模板与特定的数据源结合起来就能呈现出动态网页。

Python的框架基本都是MTV的:

M:Models 模型层,负责数据库建模 与数据库打交道
T:Templates 模板层,用于处理用户显示的网页内容
V:Views:视图层,负责业务逻辑,并在适当时候调用Model和Template,用于处理与用户交互的部分,处理用户的请求并给出响应内容。
URL分发器:将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
当Flask Web项目运行时, 如果接收到前端的请求时通过控制层解析并且匹配route路由找到相应的视图函数之后执行业务层逻辑的处理, 在业务逻辑处理的时候如有需要便可以快速调用REST API接口以对接特定的服务;当有需要操作数据库时便可以交给数据层处理, 数据库的操作可调用ORM模型将数据库内容实例化成对象来完成数据访问。

而其他语言框架多采用MVC架构:

M:Models 模型层,负责业务对象和数据库的关系映射(ORM)。
V:Wiews 视图层,用处处理用户显示的内容的,等同于MTV的 T
C:Controller:控制器,处理用户的请求与响应等同于MTV的 V
在这里插入图片描述

三个部分的关系示意图如下:
在这里插入图片描述
Flask框架的一些概念:

1.应用程序对象:应用程序对象是Flask应用程序的核心对象。它是一个Flask类的实例。应用程序对象是用于创建Web应用程序的主要接口。

2.上下文:Flask框架中有两种上下文:应用程序上下文和请求上下文。应用程序上下文为应用程序提供了一个全局上下文,而请求上下文则为每个请求提供了一个上下文。

3.路由:它是Flask应用程序中的URL映射。它指定了URL与视图函数之间的关系。

4.视图函数:视图函数是Flask应用程序中处理请求的函数。它们使用装饰器将路由绑定到函数上。

5.模板:模板是Flask应用程序中用于渲染HTML页面的文件。它们使用Jinja2模板引擎进行渲染。

6.表单:表单是Flask应用程序中用于收集用户输入数据的HTML表单。一般使用WTForms库进行验证和处理。

对比,Flask 框架主要的模块如下:

1、应用模块:Flask 的核心模块,负责创建 Flask 应用程序对象,并定义一些应用程序级别的配置和功能,负责管理整个应用程序的生命周期。它是整个 Web 应用程序的入口,负责接收 HTTP 请求并返回响应。它还负责路由、错误处理、上下文等功能。
2、路由模块:Flask 使用装饰器来定义 URL 路由和视图函数之间的映射关系。
3、视图模块:视图函数是 Flask Web 应用程序的核心,它处理 HTTP 请求并返回响应,可以返回 HTML 页面、JSON 数据等。
4、模板模块:Flask 使用 Jinja2 模板引擎来生成 HTML 页面。模板引擎提供了丰富的语法和过滤器,可以轻松地生成复杂的 HTML 页面。模板就是一个包含响应文本的文件 通常也是HTMl文件,该文件中可以包含“占位变量” 来表示动态的内容,具体值 只有在请求中才能获取 “占位变量"最后会被真实的值替换,模板最终也会被解析成响应的字符串 这一过程也称为"渲染”。默认情况下 Flask会在程序文件夹中的 templates 子文件夹中自动寻找模板,默认需要收动创建 templates 子文件夹 ,里面放HTML文件。
5、数据库模块:Flask 可以轻松地集成多种数据库,包括 MySQL、PostgreSQL、SQLite 等。
6、表单模块:Flask-WTF 是 Flask 的表单处理扩展,提供了方便的表单处理方法,可以轻松地创建表单、验证表单数据等。
7、扩展模块:Flask 的扩展模块提供了各种功能,如邮件发送、缓存、登录认证等。

其中,应用模块通常包括以下内容:

1)创建应用程序对象:使用 Flask 类创建应用程序对象。Flask 类的构造函数需要传入应用程序的名称作为参数。
2)配置应用程序:可以使用 config 属性来配置应用程序的基本属性,如调试模式、密钥、数据库连接等。
3)注册路由:使用 route 装饰器来注册 URL 路由和视图函数之间的映射关系。路由定义了 HTTP 请求的 URL 地址和视图函数之间的映射关系。
4)定义视图函数:视图函数是处理 HTTP 请求的函数,可以返回 HTML 页面、JSON 数据等。视图函数通常使用 route 装饰器定义 URL 路由。
5)上下文管理:Flask 应用程序使用上下文对象来管理:请求上下文和应用上下文。请求上下文包含了每个 HTTP 请求的相关信息,如请求头、请求参数等。应用上下文包含了应用程序的相关信息,如配置信息、数据库连接等。
6)错误处理:Flask 应用程序可以通过注册错误处理函数来处理 HTTP 请求中出现的错误,如 404 错误、500 错误等。
7)扩展管理:Flask 应用程序可以通过注册扩展对象来增加应用程序的功能,如数据库连接、缓存、邮件发送等。
8)启动应用程序:通过 run 方法启动应用程序,使其可以接收 HTTP 请求。

#导入了 Flask 类和 render_template 函数,Flask使用render_template 函数封装了Jinja2模板引擎,web网页模板需要flask内的render_template模块
from flask import Flask,render_template
#创建了一个 Flask 应用程序对象,使用了__name__ 作为应用程序的名称
app = Flask(__name__)

#配置应用程序的基本属性,包括调试模式和密钥等
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'your_secret_key'

#或者单独写入待外部文件,这里调用即可
app.config.from_pyfile('config.ini')

'''注册路由和视图函数;使用 @app.route() 装饰器来注册 URL 路由和视图函数之间的映射关系
定义了三个视图函数,分别对应不同的 URL 地址,对应返回不同的响应内容'''
@app.route('/')
def hello():
    return 'hello world'
@app.route('/user/<name>')
def user(name):    
	return 'Hello, %s !'  % name
#/hello/ 和 /hello/<name> 两个路由对应的是同一个视图函数,使用了 Flask 支持的多路由规则
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):    
	return render_template('hello.html', name=name)  '''使用render_template模块来渲染模板文件,通过第二个参数传递数据变量;传入render_template()内的第一个参数是html模板名,后面的参数都是键值对;传参时是赋值式(在html内的标识)= (传入的变量名),也可以用args,把数据以key value 形式传入字典把整个字典变量名传入到html里,直接调用key即可'''
	
#字典传入模板案例
@app.route('/')
def index():
    my_str = 'hello world'
    my_int = 123
    my_list = [1, 2, 3, 48, 93]
    my_dict = {
   'name': '张兰', 'age': 19

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RFID技术在工业智能制造生产线中的应用

随着自动化和信息化的快速发展&#xff0c;工业智能制造成为制造业的重要趋势&#xff0c;在制造商的生产线上&#xff0c;准确获取和管理工艺流程等各个环节的信息至关重要&#xff0c;作为物联网感知层的核心组成部分&#xff0c;RFID技术以其非接触式、无感知的特点&#xf…

隔山打牛:金融大崩溃

当2004-2006年美联储主席格林斯潘在任期的末尾一鼓作气把联邦利率从1%拉高到5%&#xff0c;然后把美联储主席的位子交给继任者伯南克的时候&#xff0c;没有人意识到接下来将要发生何等巨变。 图&#xff1a;美国联邦利率 伯南克把利率稳定在5.3%附近的高位一年左右时间&#x…

【ArcGIS】基本概念-矢量空间分析

栅格数据与矢量数据 1.1 栅格数据 栅格图是一个规则的阵列&#xff0c;包含着一定数量的像元或者栅格 常用的栅格图格式有&#xff1a;tif&#xff0c;png&#xff0c;jpeg/jpg等 1.2 矢量数据 矢量图是由一组描述点、线、面&#xff0c;以及它们的色彩、位置的数据&#x…

无涯教程-JavaScript - AVEDEV函数

描述 AVEDEV函数返回数据点与其平均值的绝对偏差的平均值。 AVEDEV是数据集中变异性的量度。 语法 AVEDEV (number1, [number2] ...)争论 Argument描述Required/OptionalNumber11 to 255 arguments for which you want the average of the absolute deviations.Requirednum…

趴趴雅思作文修改

前言 在网上试了下趴趴雅思作文修改的服务&#xff0c;淘宝上直接就可以购买&#xff0c;首次有优惠&#xff0c;之后还是挺贵的。 用了下感觉&#xff0c;有用还是有用的&#xff0c;但是挺贵的&#xff0c;一次40&#xff0c;不值。他给我作文的评分是7分&#xff0c;应该给…

fineReport11.0.4版本新建数据链接

需要以下几步&#xff1a; 1.设计器和服务器都需要安装对应数据库的驱动&#xff08;已安装就跳过&#xff09; 对应驱动可以在官网下载&#xff0c;百度搜下有教程 2.服务器没有驱动需要上传驱动 2.1 服务器上传驱动文件&#xff0c;需要修改finedb中的fine_conf_entity表…

Mobpush上线跨时区推送功能,助力中国开发者应用出海

近年来随着国内移动应用存量市场饱和&#xff0c;国内移动应用厂商转向”移动出海“&#xff0c;把握国际市场中存在结构性发展机会&#xff0c;提升中国品牌移动应用的知名度和影响力。根据公开资料显示&#xff0c;中国应用开发者中有79.1%计划出海&#xff0c;其中43%的开发…

极光笔记 | 大语言模型插件

在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;是根据预训练数据集进行”学习“&#xff0c;获取可以拟合结果的参数&#xff0c;虽然随着参数的增加&#xff0c;模型的功能也会随之增强。但无论专业领域的小模型&#xff0c;还是当下最火、效果最好的大模…

分享一下微信公众号怎么实现积分商城功能

微信公众号作为一种社交媒体平台&#xff0c;可以帮助商家与消费者进行互动和沟通。除了实现微信拼团活动外&#xff0c;微信公众号还可以实现积分商城功能&#xff0c;提高消费者的参与度和忠诚度。本文将介绍如何在微信公众号实现积分商城功能。 一、了解积分商城 积分商城是…

邮件如何避免进垃圾箱

邮件营销是一种常见的营销手段&#xff0c;可以帮助企业向大量目标群体发送营销信息&#xff0c;因此邮件营销被广泛应用于促销活动、产品推广、新闻发布、客户维护等场景。然而随着垃圾邮件的泛滥&#xff0c;国内外大部分的电子邮件服务商都采取了越来越严厉的垃圾邮件过滤机…

系统集成|第九章(笔记)

目录 第九章 成本管理9.1 成本管理概念及相关术语9.2 主要过程9.2.1 制订成本管理计划9.2.2 成本估算9.2.3 成本预算9.2.4 成本控制 上篇&#xff1a;第八章、进度管理 第九章 成本管理 9.1 成本管理概念及相关术语 概述&#xff1a;项目成本管理就是要确保在批准的预算内完成…

怎么优化企业内部的报修流程?有什么好用的企业智能报修管理系统?

随着数字化转型成为企业的新风向&#xff0c;传统的企业报修方式已经变得不够便捷。传统的报修流程往往依赖于企业内部的组织架构&#xff0c;给员工和用户带来了许多麻烦。报修人需要注册、登录、下载和安装相关软件&#xff0c;而且一个故障报修还需要进行多个步骤的操作才能…

AI生成原创文章的工具-AI生成原创文字软件

让我们来了解一下AI生成原创文章的概念。这是指使用人工智能技术&#xff0c;特别是自然语言处理模型&#xff0c;来生成文字内容&#xff0c;这些文字看起来就像是由我们创作的。这种技术已经在自媒体、新闻媒体、博客和其他各种网站上广泛使用。但是&#xff0c;问题出现在于…

上位机在自动化控制中的作用和优势是什么?

上位机在自动化控制中的作用和优势是什么&#xff1f; 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”&#xff0c;即刻获取关于上位机开发和数据可视化的专业学习资料&#xff0c;近年来&#xff0c;上位机编程逐渐兴起&#xff0c;正在逐步替代…

数据结构与算法(五)--链表概念以及向链表添加元素

一、前言 今天我们学习另一种非常重要的线性数据结构–链表&#xff0c;之前我们已经学习了三种线性数据结构&#xff0c;分别是动态数组&#xff0c;栈和队列。其中队列我们额外学习了队列的另一种实现方式–循环队列。其实我们自己实现过前三个数据结构就知道&#xff0c;它…

什么是智能推荐?智能推荐的原理是什么?

一、智能推荐的魔力 2020年的愚人节晚间&#xff0c;罗永浩在抖音带货&#xff0c;相信你也被刷屏了吧。3小时的直播过程中&#xff0c;22款产品轮番出场&#xff0c;最终首播支付交易总额突破1.1亿、整场直播观看总人数超过4800万、总销售件数逾91万&#xff0c;粉丝打赏音浪…

MySQL数据库查缺补漏——基础篇

MySQL数据库查缺补漏-基础篇 基础篇 net start mysql80[服务名] net stop mysql80 create database pshdhx default charset utf8mb4; 为什么不使用utf8&#xff1f;因为其字符占用三个字节&#xff0c;有四个字节的字符&#xff0c;所有需要设置为utf8mb4; 数值类型&…

免费获取独立ChatGPT账户!!

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。2、数据可视化…

无涯教程-JavaScript - TANH函数

描述 TANH函数返回数字的双曲正切。 语法 TANH (number)争论 Argument描述Required/OptionalNumberAny real number.Required Notes 双曲正切的公式为- $$TANH\left(z\right)\frac {SINH\left(z\right)} {COSH\left(z\right)} \frac {e ^ ze ^ {-z}} {e ^ z e ^ {-z}} …

企业AI机器人,客户服务的好帮手!

客户服务对于任何业务运营来说都是很重要的方面。它是企业与其客户之间的直接联系点&#xff0c;可以进行有效的沟通以及解决问题。良好的客户服务体验可以显著影响公司的声誉&#xff0c;从而提高客户满意度、留存率并最终实现收益增长。 很多企业想尽各种方法想要提供更好的…