Python项目Flask ipv6双栈支持改造

这篇具有很好参考价值的文章主要介绍了Python项目Flask ipv6双栈支持改造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

Python项目Flask ipv6双栈支持改造,Python笔记,python,flask,gunicorn,supervisor,django

  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架构:

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

现场环境版本: 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 应用。
Python项目Flask ipv6双栈支持改造,Python笔记,python,flask,gunicorn,supervisor,django

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

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

Python的框架基本都是MTV的:

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

Python项目Flask ipv6双栈支持改造,Python笔记,python,flask,gunicorn,supervisor,django

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

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

M:Models 模型层,负责业务对象和数据库的关系映射(ORM)。
V:Wiews 视图层,用处处理用户显示的内容的,等同于MTV的 T
C:Controller:控制器,处理用户的请求与响应等同于MTV的 V
Python项目Flask ipv6双栈支持改造,Python笔记,python,flask,gunicorn,supervisor,django

三个部分的关系示意图如下:
Python项目Flask ipv6双栈支持改造,Python笔记,python,flask,gunicorn,supervisor,django
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 请求。文章来源地址https://www.toymoban.com/news/detail-731803.html

#导入了 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': 

到了这里,关于Python项目Flask ipv6双栈支持改造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 怎么通过ssh连上ipv6的服务器?阿里云怎么配置ipv6?wsl2怎么支持ipv6?

    最近在研究ipv6,光调通环境居然让我折腾了好多回,现在终于通了 在这里提一句,IPV6和IPV4是两种东西,不要想着ipv6兼容ipv4,你就当它是全新的东西 测试通过就代表你电脑可以访问ipv6 http://www.test-ipv6.com/ 如果不行,你需要先看光猫有没有开ipv6,比如我就是拿到公司光猫的

    2024年02月05日
    浏览(62)
  • 何判断自己网络是否支持IPV6

    Win10专业版 IPV6 何判断自己网络是否支持IPV6 要判断您的网络是否支持 IPv6,可以采取以下方法: 检查您的网络设备(如路由器、交换机等)是否支持 IPv6。通常,支持 IPv6 的设备会标明 “IPv6 Ready” 或 “IPv6 Enabled”。 如果您使用的是 Windows 操作系统,可以打开命令提示符(

    2024年02月05日
    浏览(34)
  • 启用Docker对ipv6的支持

    我的环境: OS: CentOS 7.9 Docker: 20.10.7 要想在Docker容器或者Swarm服务中使用ipv6,首先需要在 Docker守护进程中启用对ipv6的支持 ,具体做法如下: 编辑docker守护进程的配置文件 /etc/docker/daemon.json (若不存在需要手动创建该文件) ipv6 设置为true,启用对ipv6的支持。 fixed-cidr-v6

    2024年02月02日
    浏览(34)
  • 支持ipv6转发的路由器有哪些

    目前有很多支持IPv6转发的路由器可供选择,这里列举一些常见的品牌和型号: TP-Link: Archer C7 AC1750,Archer C9 AC1900,Archer C1200,Archer C60,Archer C50,Archer A9,Archer C2300,Archer C4000,Archer C5400 ASUS: RT-AC68U,RT-AC88U,RT-AC3100,RT-AC5300,RT-AC86U,RT-AC2900,RT-AC1900P,RT-AC66U,RT-N66U D-

    2024年02月12日
    浏览(41)
  • iPXE 学习 部署Linux/Windows系统 支持IPv4/IPv6

    折腾了一周的iPXE,大概弄明白了,ipxe原理 文件的具体作用就不讲了 自己也半懂不懂 不过有一说一 这可能是全网最完全的iPXE环境部署了 记录自己操作的每一个步骤 ┭┮﹏┭┮ 为了支持legacy BIOS 以及 UEFI 还要同时支持IPv4/IPv6 我先说一下  我的机器是多网卡  配置ipxe的端口

    2024年04月14日
    浏览(65)
  • Docker下CentOS7配置IPV6并支持Nginx访问

    命令 含义 –name centos7-port 容器名字叫 centos7-port –privileged=true 获取特权 -p 80:80 -p 8080:8080 -p 8088:8088 映射80 8080 8088 三个端口 -v D:/docker/centos/home:/home 将本机 D:/docker/centos/home 映射到容器的 /home centos:centos7.9.2009 指定使用的镜像,没有的先下载 /usr/sbin/init 初始化容器 查看IPV6地址

    2024年02月10日
    浏览(45)
  • IPv6 学习笔记

    IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。 由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使

    2024年02月12日
    浏览(40)
  • [服务器-数据库]MongoDBv7.0.4不支持ipv6访问

    错误描述 报错如下描述 问题分析 首先确定其是否支持ipv6网络 不支持的话修改器配置文件如下所示 查看服务器是否开启防火墙权限 错误原因 原因1:配置文件 原因2:服务器防火墙 原因3:navicat中,访问地址需要加中括号 解决方式 在navicat中,需要加中括号

    2024年02月22日
    浏览(46)
  • 计算机网络笔记:IPV6

    IPV6的产生背景 :到2011年,IPV4地址已经全部耗尽。解决IPV4地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,因此IPV6应运而生。 IPV6概述 :IPV6仍然支持无连接的传送,但是将协议数据单元PDU称为分组,而不是IPV4中的数据报。 IPV6的主要变化 : 更大的地址空间 :

    2024年02月10日
    浏览(38)
  • 【网络协议详解】——IPv6协议(学习笔记)

    更大的地址空间 :IPv6将IPv4的 32 比特地址空间增大到了 128 比特,在采用合理编址方法的情况下,在可预见的未来是不会用完的。 扩展的地址层次结构 :可划分为更多的层次,这样可以更好地反映出因特网的拓扑结构,使得对寻址和路由层次的 设计更具有灵活性 。 灵活的

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包