为flask创建扩展

为flask创建扩展

对于flask的扩展我们已经很熟悉了,例如flask-corf等
其实从根本来说flask的扩展就是程序包。一些是为flask 增加功能,另一些是将一些功能附加到flask上

扩展的命名

命名要以flask开头加上你的功能扩展 比如本次的例子就是flask-slowlogger 就是用来记录慢相应日志的

创建规范的项目目录

为了规范化一个可以公共使用的项目你可以从这里导入一个通用的模版文件
https://github.com/pypa/sampleproject

目录文件介绍

编写扩展类,扩展的入口

class SlowLogger(object):
    def __ini[......]

继续阅读

python-socketio 多进程部署

python-socketio 多进程部署

实现原理

当使用多进程的时候。多个socketio服务器通过消息队列来沟通之间的客户端sid。若发现该sid在自己的连接中。就由该进程处理发送给其下面连接的客户端

详细的可以看这里

socket.io要实现多进程以及广播,房间等功能,势必需要接入一个redis之类的消息队列,进而socket.io的emit会调用对应队列管理器pubsub_manager的emit方法,比如用redis做消息队列则最终调用 redis_manager中的_publish()

方法通过redis的订阅发布功能将消息推送到flask_socketio频道。另一方面,每个进程在初始化时都订阅了[……]

继续阅读

利用python-opencv生成视频帧数控制,和常见错误总结

利用python-opencv生成视频帧数控制,和常见错误总结

首先呢 利用opencv生成视频的例子相信网络上已经很多了。但是大多数例子都只是捕获一个摄像头就没了。但是在实际运用中会发现。因为涉及到图像处理,生成的视频要不就就是过快要不就是比实际时间长。

控制视频的帧数,捕获摄像头和生成图像都适用

关键在于在生成一帧的时候与下一帧的间隔时间。中间图像处理会造成延迟所以说会造成视频时间比预想的长

 #计算处理时间
    sleeptime = time.time() - now
    #计算每一帧要延迟的时间
    sleeptime = 1 / fps - sleeptime
import time
import datetime
imp[......]

继续阅读

面试题 基础

面试题 基础

自己不会的做记录

如何实现字符串的反转?name=”lzx”,请反转为name=’xzl’

name = 'lzx'
name = list(name)
name.reverse()
name ="".join(name)
print(name)

1,2,3,4,5 能组成多少互不相同且无重复的三位数

counter=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i !=j and j !=k and k !=i:[......]

继续阅读

关于python反射的getattr,我终于想通了!

关于python反射的getattr,我终于想通了!

其实看了getattr 的解释一直不知道到底该怎么用才好。心想这直接调用就好干嘛这么麻烦

getattr(object, name[, default]) -> value 
Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. 
When a default argument is given, it is returned when the attribute doesn't 
exist; without it, an exception is raised in that case[......]

继续阅读

啥是个链表?

啥是个链表?

今天被问到个问题栈,队列,链表都是啥。看到链表老夫腚眼一紧直接懵了啊。我这带专人没有数据结构这课啊。(突然想起java学过)本这出现一个敌人打倒一个敌人的原则今天赶紧整一下。

啥是个链表?

链表就是一种常见的数据结构。和列表一样也是一种线性的数据结构。他的元素节点保存两个值。一个是本身元素的值另一个是下一个元素的地址。[……]

继续阅读

redis相关知识

redis相关知识

redis和memcached比较?

使用redis有哪些好处?

  1. 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
  2. 支持丰富数据类型,支持string,list,set,sorted set,hash
  3. 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
  4. 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

redis相比memcached有哪些优势?

  1. memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
  2. redis的速度比memcac[……]

    继续阅读

sql基础问题

sql基础问题

问题来源 https://www.cnblogs.com/wupeiqi/articles/5729934.html

解题答案 https://www.cnblogs.com/wupeiqi/articles/5748496.html

虽然已经有了解题答案但是还是要通过自己再过一遍加深自己的理解与思想。

导出数据库数据

mysqldump -u用户名 -p密码 数据库名称 >导出文件路径 # 结构+数据
mysqldump -u用户名 -p密码 -d 数据库名称 >导出文件路径 # 结构

导入现有数据库数据:

mysqldump -uroot -p密码 数据库名称 < 文件[……]

继续阅读

网络与多任务基础知识

网络与多任务基础知识

简述 OSI 七层协议

1、物理层

主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

2、数据链路层

定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

3、网络层

在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。

4、[……]

继续阅读

Python基础知识总结

Python基础知识总结

简述解释型和编译型编程语言?

  • 解释型:代码编译后可以直接运行需要解释器将代码翻译成机器码
  • 编译型:代码编写完成后会有一个编译后的过程,生成可执行文件。然后运行编译好的机器码。

Python解释器种类以及特点?

Python 解释器的版本

我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。

CPython

官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Pytho[……]

继续阅读