win10+sublime3配置python3.7和vue2.0前后端分离项目以及sublime3最新注册码破解by Liu Yue/2020-02-26 标签: 最新 配置 python3.7 以及 项目 分离 前后 sublime3 win10 vue2.0 注册码 破解 最近一直在用mac下的虚拟机运行win10系统,由于在线人数过多,直播授课的时候使用vscode的时候内存暴涨,于是考虑切换回sublime3,毕竟编辑器要比ide要轻量的多,在此记录一下整个流程。 首先下载,sublime3软件安装包:https://www.sublimetext.com/ 安装好后,安装python......了解更多
使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储by Liu Yue/2020-02-24 标签: 使用 python3.7 异步 上传 文件 通过 Django2.0 vue 前端 api 存储 js2.0 七牛 云云 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用vue+django来进行异步上传,因为毕竟vue.js才是目前的前端的主流。 首先注册七牛云:qiniu.com,进入你的七牛云账号,打开秘钥页,记录下你的ak和sk 随后新建一个云存储空间,这里空间......了解更多
使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练by Liu Yue/2020-01-02 标签: 使用 实现 python3.7 以及 opencv4.1 人脸识别 人脸 模型 训练 特征 OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的demo 首先安装一些依赖的库pip install opencv-python pip install opencv-contrib-python pip install numpy pip install pillow ......了解更多
使用Django2.0.4集成钉钉第三方扫码登录by Liu Yue/2019-12-21 标签: 使用 Django2.0 登录 集成 扫码 第三方 钉钉作为阿里旗下的一款免费移动通讯软件,受众群体越来越多,这里我们使用Django来集成一下钉钉的三方账号登录,首先注册钉钉开发平台:https://open-dev.dingtalk.com/ 在移动应用中选择登录 创建一个网站应用,其中有用的信息是appid,appsecret,还有回调网址 &......了解更多
使用异步非阻塞框架Tornado配合七牛云存储Api来异步切分上传文件by Liu Yue/2019-12-15 标签: 使用 异步 上传 配合 文件 Tornado 七牛云 api 切分 存储 之前写了几篇关于FastDfs分布式存储的文章:python3.7.3操作FastDfs来进行文件操作,其实市面上关于云存储的第三方服务比比皆是,最著名的无疑就是七牛云存储,本次我们将演示用tornado配合七牛云来进行文件的云存储操作。 在做七牛云的文件上传时,很多人有一个误区,就是以为是前端先上传到后台服务器,然后后台服务器再将文件上传到七牛云,这个逻辑本身没有问题,但是会遇到一个问题,如果是后台对接七牛,出一个接口,......了解更多
Python3的原生协程(Async/Await)和Tornado异步非阻塞by Liu Yue/2019-09-20 标签: 异步 python3 Tornado 协程 原生 阻塞 我们知道在程序在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞,而协程作为一种用户态的轻量级线程,可以帮我们解决这个问题。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存,在调度回来的时候,恢复先前保存的寄存器上下文和栈。因此协程能保留上一次调用时的状态,即所有局部状态的一个特定组合 说人话:说白了就是,当协程遇到io操作而阻塞时,立即切换到别的任务,如果操作完成则进行回调返回执行结果,提......了解更多
mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能by Liu Yue/2019-09-15 标签: 功能 实现 python3.7 Django2.0 支付 微信 程序 mpvue1.0 其实微信支付有很多种形式,刷脸,扫码,APP支付,小程序支付等,这边只说明小程序支付的实现,不过原理上都大同小异。 首先,需要注册微信公众号平台https://mp.weixin.qq.com,并且开通微信支付功能,随后将你的小程序关联一个微信商户:pay.weixin.qq.com,这一系列申请下来之后,你手中需要有微信小程序appid,微信小程序秘钥,商户号,以及商户秘钥,这四个关键的支付配置变量。......了解更多
基于python3.7利用Motor来异步读写Mongodb提高效率by Liu Yue/2019-09-06 标签: python3.7 异步 基于 利用 Mongodb 读写 Motor 提高效率 如果使用Python做大型海量数据批量任务时,并且backend用mongodb做数据储存时,常常面临大量读写数据库的情况。尤其是大量更新任务,由于不能批量操作,我们知道pymongo是同步任务机制,相当耗时。 如果采用多线程、多进程的方案确实有效,但编写麻烦、消耗系统资源大(pymongo还不允许fork线程中共用连接)。这里主要瓶颈在于IO,使用单线程异步操作就会效果很好。 M......了解更多
关于Python3异步非阻塞Web框架Tornado:真实的异步和虚假的异步by Liu Yue/2019-09-01 标签: 关于 异步 Tornado 虚假 真实 我们知道Tornado 优秀的大并发处理能力得益于它的 web server 从底层开始就自己实现了一整套基于 epoll 的单线程异步架构,其他 web 框架比如Django或者Flask的自带 server 基本是基于 wsgi 写的简单服务器,并没有自己实现底层结构。而tornado.ioloop 就是 tornado web server 最底层的实现。 ioloop 的实现基于 epoll ,......了解更多
使用python3和高性能全文检索引擎Redisearch进行交互by Liu Yue/2019-08-30 标签: 引擎 使用 进行 python3 全文检索 Redisearch 交互 高性能 上一篇介绍了一款高性能全文检索引擎Redisearch,它不仅性能强劲,部署也方便,这里介绍一下如何用python客户端和它进行交互。使用redisearch-python:https://github.com/RediSearch/redisearch-py 首先,安装 pip3 install redisearch ......了解更多
平民版的Elasticsearch?使用Redisearch实现的全文检索功能服务by Liu Yue/2019-08-29 标签: 使用 功能 实现 服务 全文检索 Redisearch “检索”是很多产品中无法绕开的一个功能模块,当数据量小的时候可以使用模糊查询等操作凑合一下,但是当面临海量数据和高并发的时候,业界常用 elasticsearch 和 lucene 等方案,但是elasticsearch对运行时内存有着最低限额,其运行时大小推荐 2G 以上的内存空间,并且需要额外的磁盘空间做持久化存储。 其实mongoDB 内置的正则匹配搜索文本以及自带的 text 索引和 searc......了解更多
9012年,您真的需要Thrift这样一个RPC微服务框架来拯救一下传统HTTP接口(api)了by Liu Yue/2019-08-27 标签: 一个 框架 一下 http 接口 9012 Thrift RPC 拯救 传统 需要 这样 目前市面上类似Django的drf框架基于json的http接口解决方案大行其道,人们也热衷于在接口不多、系统与系统交互较少的情况下使用它,http接口的优点就是简单、直接、开发方便,门槛低,利用现成的http协议进行传输。 但是事情往往有两面,如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手4次挥手,减少了网络开销;其次就是......了解更多
利用基于Python的Pelican打造一个自己的个人纯静态网站by Liu Yue/2019-08-08 标签: Python 一个 静态 打造 基于 利用 自己 网站 Pelican 个人 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域的同仁。 之前我曾经写过两篇相似的文章用来快速搭建个人网站,一款基于go lang:利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统另外一款基于node.js:使用Hexo建立一个轻量、简易、高逼格......了解更多
python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务by Liu Yue/2019-07-31 标签: 实现 python3.7 Tornado5.1 Celery3.1 Rabbitmq3.7 16 异步 队列 任务 在之前的一篇文章中提到了用Django+Celery+Redis实现了异步任务队列,只不过消息中间件使用了redis,redis作为消息中间件可谓是差强人意,功能和性能上都不如Rabbitmq,所以本次使用tornado框架结合celery,同时消息中间件使用Rabbitmq来实现异步发邮件,并且使用flower来监控任务队列。 首先安装rabbitmq Mac os直接运行brew......了解更多
用户认证(Authentication)进化之路:由Basic Auth到Oauth2再到jwtby Liu Yue/2019-07-16 标签: Authentication Basic Auth Oauth2 jwt 认证 进化 用户 用户认证是一个在web开发中亘古不变的话题,因为无论是什么系统,什么架构,什么平台,安全性是一个永远也绕不开的问题 在HTTP中,基本认证(Basic access authentication)是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。 虽然基本认证非常容易实现,但该方案创建在以下的假设的基础上,......了解更多
python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)by Liu Yue/2019-07-12 标签: Python 遇到 性能 问题 文件 面试 10g 50g 1t 花式 读取 最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什么姿势读它? 所有人都知道,用python读文件有一套”标准流程“: def retrun_count(fname): """计算文件有多少行 """ count = 0 with open(......了解更多
使用python将word文档和pdf电子书进行格式互转(兼容Windows/Linux)by Liu Yue/2019-07-10 标签: Python 使用 文档 进行 Linux Windows 互转 word pdf 兼容 格式 电子书 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些word文档批量转换pdf是最好的解决方案。 由于windows系统对于word文档有天然的兼容性优势,所以转换起来很简单,普遍上是通过comtypes模块。 pip3 install comtypes from comtypes.client impor......了解更多
python3的单元测试模块mock与性能测试模块cProfileby Liu Yue/2019-06-14 标签: 性能 模块 测试 python3 单元测试 mock cProfile 我们知道写完了代码需要自己跑一跑进行测试,一个写好的程序如果连测试都没有就上到生产环境是不敢想象的,这么做的人不是太自信就是太无知。 传统测试无非就是自己运行一下程序查看结果,或者前后端服务进行联调,这里要说的是走正规流程的单元测试,那到底什么是单元测试呢?顾名思义,只测试当前单元的程序或者代码,也可以理解当前模块的代码块,单元测试假设所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部......了解更多
在Centos下对Tornado的性能进行测试(Stress Testing)by Liu Yue/2019-06-04 标签: 性能 centos 测试 进行 Tornado 在之前的一篇文章中,我们在1g1核的惨淡硬件环境下,对 uwsgi + django 和 gunicorn+ django 的后端服务进行性能测试,得出结论单台django在简单读库操作下只能抗住大约200左右的并发:在Centos下使用Siege对Django服务进行压力测试 这一次,我们在相同的背景下,对三大框架中,以性能著称于世的Tornado进行并发测试,看看它的性能到底有多高。 &nb......了解更多
在阿里云Centos7.6上面部署基于redis的分布式爬虫scrapy-redisby Liu Yue/2019-05-27 标签: 爬虫 Scrapy 阿里 基于 redis 部署 Centos7.6 分布式 上面 Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个服务器的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。 而Scrapy-Redis则是一个基于Redis的Scrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(......了解更多