之前的时候一直用的flask做后端的,只是用了后发现他是阻塞式的,对比了一下sanic后果断的换了sanic。说实话用flask的确是很方便。什么东西拿来就用的。登陆管理有Login模块,很方便。但是选择了sanic就选择了自己造轮子了。

我的后端用的是golang和sanic所有的api请求全部放到golang里面,实际上sanic的角色就是主要的逻辑判断和模板渲染。毕竟golang的处理能力和Python相比要强得多。这样把主要的负载放到golang里面就不用担心sanic了。当然sanic和golang是共享登录状态的。今天总结一下大概的。

登陆状态管理:参考了github的一个别人的小demo然后自己用flask的思路实现了,flask的@auth.login_required,logout,

is_authenticated,is_anonymous,current_user目前主要用到的是这几个,登录状态是基于redis存储的不是cook保存。角色权限这一块目前还没有去做后面会慢慢完善。

用户邮箱激活:这一块也是基于flask的思路来做的不同的是用的异步方式。主要思路是注册后异步发邮件后发一条加密后的连接给用户邮箱。点击连接访问激活路由的时候进行解密验证,当然加密的东西必须和这个用户的资料相关,因为解密后核对的时候和用户的资料某个字段对比,过期时间就很简单了,加密时候加一个时间戳进去,解密后会得到一个用户资料某个字段和一个时间戳,和当前时间对比,超过多久就过期判断一下过期了就不给激活abort(404)就可以了

用户注册登陆账号密码前后端的加密传输加密保存:这里最重要的实际就是前后端要采用一样的加密解密方式其实没有什么难度。

基于redis的用户请求token的存储验证:这个有一个现成的sanic的session库可以实现session在github就可以找到,我这里主要是和golang要共享session和token验证。所以我的思路是token的加密解密全部放go里面,sanic需要验证token的时候也是用iohttp这个包取请求,基本上所有的需要用到CPU密集型的处理我全部放到go里面了。主要不会对sanic产生压力了。

基于froala_editor编辑器的图片上传鉴权验证保存:这个编辑器很好用但是只有针对dDjango和flask的sdk没有针对sanic的因为sanic是异步的,所以这个就是完全在flask的sdk的基础上自己改的。目前完全支持sanic,主要是要修改里面的同步逻辑代码改成异步的就可以了

用nginx做跳转的图片重定向:主要作用是我们对于图片的url重定向,比如请求的用户私人图片路径是/statick/prv/xxxxxxuseruid/1234.jpg这里xxxx是用户的uid定义的一个目录文件夹,里面放的是用户私人的图片也就是别人无法访问的,用户公开的图片路径是/statick/pub/5678.jpg,这里是所有用户可见的图片,但是我们需要把所有的图片路径统一成/upload/1234.jpg, /upload/5678.jpg,统一成这样然后在这个路由里面做鉴权和真是路径判断然后输出给nginx,由于nginx是网站第一道门这样就可以保护我们真实地目录结构,他接受访问图片的地址永远是/upload/xxxxx。jpg,这个功能还不错,还有就是试想一下我们把所有图片用真是路径写到代码里面了包括前端的,但是对于后期如果有目录结构调整的话我们傻眼了,用这个重定向我们很方便,只需要修改这个路由里面就可以,

基于gensim的重复垃圾信息自动审核:这个主要就是判断一篇文章的相似度超过阈值就审核状态为待审核然后转人工审核,一般的垃圾信息很多是打了重复内容乱发这个自动审核会很有用。

基于keywordtree的敏感字过滤:这个主要是自动审核文字内容的敏感字,他会把所有包含在敏感字库里面的词组都检索出来,速度超快,可能底层是用c写的,我试了一下几千字基本就是0.001秒就给出结果了。准确率很高。我们可以根据这个来更新审核状态到人工,通过的就可以直接转审核通过了。

基于Yahoo的AI开源模型open_nsfw的图片自动审核:这里我是直接把它做成一个api然后用一个单独的sanic的app来运行处理,因为底层是c写的我们也不用担心底层效率,不过速度有点慢一张图片的审核时间大概是3--5秒。不过我用的并行审核,一次处理10张图片的话就基本可以把平均效率拉低到平均大约2,5秒左右处理一张。判断结果我们可以定阈值,对于超过.8分的就可以认定是敏感图可以pass掉,对于低于.2分的可以认定正常图片直接通过。对于中间值的可以转人工审核,这里其实是主要减低人工工作量

基于rabbitmq的其他需要通过队列处理的事件:这里也是为了减轻sanic的负载。对于一些队列任务比如push用户消息之类的。

把aioredis和aiomysql的线程池包装成上下文管理器:这样在使用的时候直接在上下文管理器里面操作不用每次去关闭资源,可能他的线程池里面有对自语昂立的自动回收,但是你用压测的跑一下就会发现,会有很多未关闭的资源,也许是他的回收机制有一个时间阀吧,具体我没有深入研究了

对于前端输入文本的xss过滤:是参考了github的一个小demo做的主要是过滤xss攻击的。当然前端也会做过滤。froala_editor这个编辑器的cleanHtml的功能很好用可以直接包装成一个函数在任何js里面使用了。

我的前端用的是vue和jq的结合:需要数据处理能够绑定数据的全部用vue,只有在不得已的时候只能用jq去操作dom了。我觉得没有必要非要说只用哪一个或者哪一种。我们的目的是实现需求,能够用最省力的方式实现需求的都是好方法。

目前技术栈主要是Python,go,JavaScript,vue,如果有共同兴趣的小伙伴可以一起探讨研究一下。我的微信是WFpHMTY4MTc4(base64一下)

一些基于sanic的总结相关推荐

  1. python sanic orm_基于sanic的微服务框架 - 架构分析

    感谢@songcser分享的<基于sanic的微服务基础架构>https://github.com/songcser/sanic-ms 最近正在学习微服务,发现这个repo不错,但不完整, ...

  2. 基于Sanic的微服务基础架构

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力.有些异步框架Tornado. ...

  3. 基于sanic打造python web框架

    0x00 Why 为何做这件事,在去年的一个项目中,算法同学要使用在线模型训练,不得不使用python的tf框架,这样我们不得不是python web框架,当时因为团队里面没人懂python相关的知识 ...

  4. python sanic orm_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践

    SanicCRUD-vue Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践 背景 本项目将使用Sanic + Vue2 + Webpack2 配合最简单CRUD的逻辑来展示一个 ...

  5. “脚踢各大Python Web框架”,Sanic真有这能耐么?

    在Github上,Sanic第一句介绍语就是: "Sanic is a Flask-like Python 3.5+ web server that's written to go fast ...

  6. python sanic_python高性能web框架Sanic学习--url

    本文基于sanic 官方文档解释及自己阅读后的感想. 首先什么是sanic? sanic是一款用python3.5+写的web framework.它有一下几个特点: 1.flask-like的语法风 ...

  7. 飞桨OCR打标、训练、预测、部署全流程

    注:本文档全部在Windows10环境下操作 注:本文档使用的飞桨OCR全景项目代码版本为 release/2.4 查询文档列表: 飞桨OCR官方中文文档:https://github.com/Pad ...

  8. Rasa课程、Rasa培训、Rasa面试系列之 Rasa幕后英雄系列-机器学习研究员 Johannes

    Rasa课程.Rasa培训.Rasa面试系列之 Rasa幕后英雄系列-机器学习研究员 Johannes Mosig 博士 Dialogue Transformers第二作者 在 Rasa,我们的团队正 ...

  9. Python工程师必备:基础能力提升50篇文章合集

    Python 是当今非常热门的语言之一,Python的学习者也越来越多. 在Python学习过程中,很多初学者不知道明确的学习路径,实际动手能力也存在着欠缺. 为了解决这个问题,CSDN正式推出C站软 ...

最新文章

  1. 什么是 AIDL 以及如何使用
  2. python正则匹配ip地址_Python正则表达式匹配ip地址实例
  3. 洛谷P3902 递增
  4. java properties配置文件_java properties配置文件操作
  5. 【H2 Database】安装
  6. 【VB.NET】实验 控件综合运用——“五一”商城大促の模拟
  7. C++ 常见错误(00) —— C#调用c++做的dll是报错
  8. linux:文件及目录管理
  9. Windows 系统软件有哪些「必备」软件?
  10. nginx 内置变量大全
  11. MIME类型“ image / jpg”是否与“ image / jpeg”相同?
  12. 软件测试必读的经典书籍
  13. 百度网盘分享旁边的个人说明如何修改
  14. 计算机死机代码怎么写,如何用代码让电脑死机
  15. 代码之外——名人哲语
  16. 初学者在VMware上搭建自己的CentOS8
  17. linux - linux查看磁盘空间/查看文件分区(挂载点)/查看文件大小
  18. windpy 连接数据库_python wind数据库
  19. java写花束_Java作业 题目:16版.情人节送玫瑰花
  20. FonePaw Data Recovery for Mac(数据恢复)

热门文章

  1. vue.js json_带有Vue.js的JSON编辑器
  2. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)
  3. 全国统一的基于身份证识别的计算机铁路售票系统设想
  4. Android屏幕刷新——源码分析
  5. 雅虎创始人--杨致远
  6. 尚硅谷前端项目开发笔记
  7. wordpress html插件安装,WordPress 插件安装教程及方法
  8. 用python写一个万年历
  9. Java+MySQL 基于Springboot+vue的旧物置换网站#毕业设计
  10. 解释一下什么是servlet?