flask
文章平均质量分 85
胖虎是只mao
这个作者很懒,什么都没留下…
展开
-
在线聊天——WebSocket 简介与实际实现
在 HTML5 之前,浏览器和服务器的通信都是通过 HTTP 协议进行的,那么引入 WebSocket 有什么用呢?想像一下,有一个网页正在用文字直播某一场足球比赛的比分,在没有 WebSocket 时,客户端也就是浏览器实现比分的动态更新通常通过下面两种方式:AJAX 和长轮询。这两种技术有什么区别呢?看下面的例子(S 代表服务器,C 代表客户端):Ajax 方式:C:告诉我最新的比分S:比分还没更新C:(5 秒后)告诉我最新的比分S:比分还没更新C:(5 秒后)告诉我最新的比分S:比原创 2022-03-01 01:24:18 · 1039 阅读 · 0 评论 -
flask 登录功能流程源码分析
如下图所示,这是我们在之前的实验中编写的登录视图函数,它在 handlers/front.py 文件中:当我们点击登录提交按钮后,首先进行第 42 行的表单验证,通过后,根据邮箱查询 user 数据表中对应的用户信息,然后调用 Flask-Login 提供的 login_user 方法登录。接下来我们继续分析这个方法,它在 flask_login.utils 模块中:在上一节实验我们对这个方法的参数做了说明:user 就是 User 映射类的实例;remember 是布尔值,当用户在表单中选原创 2022-01-21 17:24:25 · 685 阅读 · 0 评论 -
直播技术原理分析
一、技术原理分析在介绍直播技术之前,首先大家需要理解流媒体的概念。所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。流式传输方式是将视频和音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向客户端连续、实时传送。客户端通过解压软件对这些数据进行解压后,多媒体就会像发送前那样显示出来。理解了流媒体,就不难直播原理了,因为直播也是一种流媒体。只不过相比视频、音乐网站这种传统的流媒体,直播流媒体的数据源是由客户端(主播)产生然后实时推送到服务器的,下面的图片显示了直播的大致流程:原创 2022-01-21 17:11:33 · 8675 阅读 · 0 评论 -
flask 请求处理流程及其源代码分析、session、cookie生成源码
浏览器首次访问网站的注册页面时,request.cookies 里没有 session ,val 的值就是 None 。这时候执行第 345 行返回 self.session_class 的调用,session_class 属性就是当前模块中定义的 SecureCookieSession 类,最后请求上下文对象的 session 属性值就是此类的实例。这个实例是类字典对象,现阶段我们正在处理请求,它里面没有键值对,是空的。下一步就是调用视图函数了:如上图所示,这里涉及到表单类的实例化。在创建表单类时.原创 2022-01-19 01:43:47 · 1015 阅读 · 0 评论 -
flask Flask-Login 插件及继承 UserMixin 类、login_user 源码分析、session源码分析
一、继承 UserMixin 类Flask 项目可以使用 Flask-Login 插件来实现登录功能,这是一个被广泛使用的优质第三方库。登录功能设计用户表,我们要使用 Flask-Login 就需要让 User 映射类继承 UserMixin 类。修改 models.py 如下:from flask_login import UserMixinclass User(Base, UserMixin): ...继承 UserMixin 是干嘛呢?我们看下源码,这个类定义在 flask_l原创 2022-01-19 00:47:54 · 3059 阅读 · 0 评论 -
Flask-SQLAlchemy 初始化源码和蓝图blueprint源码小分析
一. Flask-SQLAlchemy 初始化源码在文件中定义了工厂函数 create_app :def create_app(config): """ 可以根据传入的 config 名称,加载不同的配置 """ app = Flask(__name__) app.config.from_object(configs.get(config)) # SQLAlchemy 的初始化方式改为使用 init_app db.init_app(app)如上所示的原创 2022-01-06 15:23:19 · 1658 阅读 · 0 评论 -
使用JWT生成Token,并实现Token刷新API
一、背景传统的网站用户认证方式严重依赖于 Cookie 。但 很多 项目是一个前后端分离的项目,我们希望前端界面的实现不受 项目API 的影响,这就要求 用户认证没有 Cookie 时也能进行。其实仔细想想,用户的认证鉴权,无非就是在访问 API 时发送一个能够识别出用户的字符串给服务端,然后服务端基于字符串查找出用户,再判断用户是否有权限使用 API 。这串字符串,我们可以将其称之为 Token。由于 rmon 的所有 API 都是基于 HTTP 协议的,而在 HTTP 协议中有一个 Authoriz原创 2021-12-30 17:27:31 · 6090 阅读 · 0 评论 -
python- flask current_app详解,与 current_app._get_current_object()的区别以及异步发送邮件实例
核心知识AppContext手动、自动入栈LocalStack是线程隔离的栈结构current_app是线程、协程隔离对象LocalProxy是获取当前线程隔离的代理对象一、flask中经典错误 working outside application context错误:working outside application contex原因:在没有获取到应用上下文的情况下,进行了上下文操作。代码:from flask import Flask, current_appapp =原创 2021-12-22 16:05:57 · 3948 阅读 · 1 评论 -
python 操作redis数据类型
#!/usr/bin/python# -*- coding:utf-8 -*-# __author__ = 'Jack'import timeimport redispool = redis.ConnectionPool(host='127.0.0.1', port=6379,db=19, password='82325588')r = redis.Redis(connection_pool=pool)r.flushall() # 清空Redis'''一、字符串 strings原创 2021-09-18 10:39:56 · 581 阅读 · 0 评论 -
QPS高并发性能指标及其计算公式
QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。并发数并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。RT,响应时间响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。响应时间RT(Response-time),是一个系统最重原创 2021-09-08 15:05:31 · 14316 阅读 · 0 评论 -
flask-web 搜索系统项目实际应用、suggest查询实现、联想提示、自动补全的实现
一、项目全文检索实现elasticsearch python客户端使用https://elasticsearch-py.readthedocs.io/en/master/>pip install elasticsearch对于elasticsearch 5.x 版本 需要按以下方式导入from elasticsearch5 import Elasticsearch# elasticsearch集群服务器的地址ES = [ '127.0.0.1:9200']# 创建ela原创 2021-08-02 15:41:25 · 543 阅读 · 0 评论 -
flask-web—— 搜索系统、Elasticsearch分布式搜索引擎原理、分片与集群、IK中文分析器、索引与文档、Logstash导入数据与查询
一、Elasticsearch简介与原理You know, for search!文档 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html原创 2021-08-02 15:21:08 · 482 阅读 · 0 评论 -
flask web——实时通讯、聊天服务项目、推送通知功能的实现
一、聊天服务实现在toutiao-backend/im目录中创建server.pyimport socketio# 创建sio对象sio = socketio.Server(async_mode='eventlet')app = socketio.Middleware(sio)在toutiao-backend/im目录中创建im服务启动程序main.py运行方式python main.py [端口],如python main.py 8000import eventleteventlet原创 2021-07-29 01:22:34 · 1905 阅读 · 0 评论 -
flask-web—— 即时通讯 IM、WebSocket、Socket.IO 实时推送消息
一、即时通讯简介即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务。HTTP 和TCP之间的关系:原创 2021-07-28 15:40:55 · 2247 阅读 · 0 评论 -
flask-web ——RPC实际项目业务简析
一、需求背景在首页中 获取特定用户的推荐文章列表 需要web系统和推荐系统配合有web系统告知 推荐系统 用户id是谁推荐系统 根据用户id 决定 推荐的文章idweb系统 根据推荐的文章id 查询文章数据,返回给客户端RPC业务实现RPC接口分析调用请求channel_iduser_idarticle_num 推荐的文章数量 10timestamp 时间戳 明确 跟推荐系统索要历史推荐数据还是最新的推荐结果如果timestamp传递的是最新的当前时间,则表明索要新的原创 2021-07-26 16:12:50 · 359 阅读 · 0 评论 -
flask-web —— RPC定义、结构、gRPC、Protocol Buffers
一、RPC简介1. 什么是RPC远程过程调用(英语:Remote Procedure Call,缩写为 RPC,也叫远程程序调用)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用2. 背景与用途在单台计算机中,我们可以通过程序调用来传递控制和数据;或者说通过程序调用,我们可以将多个程序组成一个整体来实现某个功能。如果将这种调用机制推广到多台彼此间可以原创 2021-07-26 15:31:49 · 2229 阅读 · 0 评论 -
flask-web APScheduler 定时任务以及实际应用
定时任务crontabLinux 本身自带的一个命令,由Linux操作系统维护定时任务APSchedulerPython实现的,定时不是由Linux操作系统维护,是单独开启进程的方式,在进程中管理定时定时任务有两种:定时任务进行页面静态化 在django运行起来之前,我们明确知道要有这个定任务不是动态添加的一般可以直接采用Linux crontabAPScheduler在django 程序已经运行的情况下用户1下单 判断在30分钟内必须支付,否则取消订单原创 2021-07-23 01:58:27 · 1251 阅读 · 2 评论 -
python-web 项目导包问题
查看启动文件的路径有些项目有多个启动文件,例如:主程序启动文件,中间件启动文件等结论:当启动文件在最外层,导入里层的子包, 是没有问题的。一旦子包被导入,初始化。那就可以在子包的各个文件中采用 from . import xxx 的导包方式但当某个启动文件在里层,想导入启动文件外部的文件,不能用上述的导包方式,因为启动文件所在的这层目录,没有被初始化过,不是python包。这种的话,可以做目录设置,比如:sys.append()添加解释器路径等方法同级目录导包 直接用 import原创 2021-07-23 01:39:09 · 209 阅读 · 1 评论 -
flask-web Redis缓存实际项目中的应用
头条项目缓存数据的设计一. 用户的基本信息数据多个用户的数据库记录是保存在redis中的一条还是多条?——>多条多条数据缓存放到多个redis记录中字符串 or 复合型 ? user_1 user_2 user_3都保存到redis中一条 X(不采用)users -> hash { 1: user_1_cache_data, 2: user_2_cache_data}users -> list [ user_1_cache_原创 2021-07-21 01:11:09 · 379 阅读 · 1 评论 -
flask-web 缓存Redis——架构、缓存模式、淘汰策略、雪崩、穿透
一、缓存的架构计算机体系结构中的缓存:多级缓存构建本地缓存方法: 使用全局变量,一般适用于保存非常非常高频的数据项目的方案SQLAlchemy起到一定的本地缓存作用在同一请求中多次相同的查询只查询数据库一次,SQLAlchemy做了本地缓存(类似Django中的Queryset查询结果集),queryset 查询集(查询结果集) 其中一个作用就是缓存 (起到了本地缓存的作用)使用Redis构建一层缓存,可以用redis cluster 作为一级外部分布式缓存二、缓存数据缓存数据的原创 2021-07-20 16:31:18 · 610 阅读 · 0 评论 -
flask-web ——对象存储——图片上传、存储、传输等 CDN的配置
1. 七牛云存储需求在项目中,如用户头像、文章图片等数据需要使用文件存储系统来保存方案自己搭建文件系统服务选用第三方对象存储服务我们在项目中使用七牛云对象存储服务 http://www.qiniu.com。...原创 2021-07-19 01:19:07 · 6786 阅读 · 2 评论 -
flask-web—— JWT认证方案
撒旦发射点原创 2021-07-13 01:04:26 · 908 阅读 · 2 评论 -
MySQL复习——项目基础使用(二)——事务、主从复制分库分表、分布式ID、雪花算法
一、 Flask事务Flask默认开启了事务应用场景: 多次数据库操作的时候,需要两种或者两种以上的操作,一起成功或者一起失败,可以用到事务例如: 以下两张表中的数据 需要同时插入,则用到事务,保证成功或者失败environ = {'wsgi.version':(1,0), 'wsgi.input': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/', 'SERVER_NAME': 'itcast server', 'wsgi.url_scheme': 'h原创 2021-07-06 03:03:42 · 637 阅读 · 0 评论 -
MySQL复习——项目基础使用(一)
主键一般不用业务数据原创 2021-07-04 23:45:15 · 105 阅读 · 0 评论 -
Flask-Web 开发——redirect、url_for、render_template、endpoint
1. redirect和url_for两者用来重定向的时候,被操作的对象不同。redirect直接是url,就是app.route的路径参数。url_for()是对函数进行操作。 最简单的用法是以视图函数名作为参数,返回对应的url,还可以用作加载静态文件,如:<link rel="stylesheet" href="{{url_for('static',filename='css/index.css')}}">url_for()还可以用来构造url,就比如说,url(‘static原创 2020-12-13 23:41:19 · 1642 阅读 · 1 评论 -
python-web flask 关于models
一、关于级联删除1.在表的外键中设置CASCADE, 可以进行级联删除。级联删除是删除父表时发挥作用。相同的列,做外键的是子表,做主键的是父表,子表是引用父表的 应该子表不能影响到父表的结果fk_vnf_id = db.Column(db.String(50), db.ForeignKey('vnf.vnf_id', ondelete="CASCADE"),index=True)在flask中两表关系是一对多。目的:删除一的同时 多也同时 删除一的一方通过relationship关联到多的原创 2020-05-28 15:23:02 · 469 阅读 · 0 评论