后端开发架构/部署/性能优化
凡凡不知所错
I hate being kept in the dark
展开
-
网站架构--WSGI,Gunicorn,Nginx,数据库缓存
python的web框架比如Flask,Django自带的服务器的目的是用于开发的,那么在生产环境下我们使用什么样的服务器呢?WSGI协议:web框架和web服务器之间需要进行通信,WSGI规定了一种在web服务器与web应用程序/框架之间推荐的标准接口。WSGI容器:Gunicorn易于配置,兼容性好,CPU消耗少,支持多种worker模式。pip install gunicor...原创 2018-12-28 14:24:11 · 552 阅读 · 0 评论 -
python的性能优化方案
line_profiler是一个对函数进行逐行分析的模块,kernprof是一个可以运行line_profiler或者python标准库cProfile的一个很方便的脚本工具。安装:$ pip install line_profiler首先使用kernprof脚本运行来开始我们的性能优化工作:$ kernprof -l script_to_profile.py上面的操作会创建一个Lin...原创 2019-06-20 15:12:15 · 823 阅读 · 0 评论 -
Ansible全套详细教程
我们使用ssh与托管节点(服务器)通信,默认使用sftp(使用SSH协议进行FTP传输的协议叫做SFTP,),如果不可用,需要在ansible.cfg文件中配置成scp方式这里不建议使用virtualenv虚拟环境来安装ansibleInventory文件对于每一个host可以选择连接类型和连接用户名:[targets]localhost ansible_connect...原创 2019-06-11 14:30:46 · 29654 阅读 · 9 评论 -
公钥与私钥,以及nginx配置https
公钥和私钥:A有两把钥匙,一个是公钥,一个是私钥公钥是可以给别人的,所有A给了X,Y,Z三个人公钥(三个人的公钥是相同的)场景一:X给A写一封私密的信,所以用A的公钥加密,那么A收到信后,可以使用他自己手上的私钥解密,那么就可以看到信件的内容,没有私钥的人是看不到信件的内容的。A要给X回信,那么就需要用到数字签名:先使用hash函数生成信件的digest再使用私钥对这个diges...原创 2019-05-27 16:25:31 · 4256 阅读 · 1 评论 -
消息队列(2) -- Redis实现消息队列(多应用)
异步任务: 很多时候服务器做的事情不需要客户端等待,所以可以把这些任务异步去做,主要原理是处理通知消息,然后针对通知消息通常是采取的队列结构。实现消费者和生产者的方式很多,可以使用Python的标准库Queue:import randomimport timefrom Queue import Queuefrom threading import Threadqueue = Queu...原创 2019-04-23 11:22:22 · 1106 阅读 · 0 评论 -
任务队列/任务调度:Celery和APScheduler(内含APScheduler实例)
首先安装pip install apschedulerAPScheduler有四个组件:triggers: 触发器,用于设定触发任务的条件,触发器包含了调度的逻辑,每个任务都有自己的触发器决定该任务下次运行的时间。job stores: 任务储存器,用于存放任务,把任务放在内存或者数据库中,一个executors: 执行器,用于执行任务,可以设定执行模式为单线程或者线程池,任务完毕后,执...原创 2019-04-18 13:04:07 · 5443 阅读 · 0 评论 -
使用Nginx+Gunicorn+systemd部署flask应用
web服务器,web应用,WSGI 之间的联系:WSGI翻译为python web服务器网关接口–>python的应用(Flask)和web服务器(比如Nginx)之间的通信协议,所以如果想让应用在web服务器上运行就必须遵守这个WSGI协议实现WSGI协议的web服务器有uWSGI和Gunicorn,所以很多地方都是使用Nginx+Gunicorn的部署方式,但是实际上直接使用...原创 2019-02-27 13:43:40 · 1160 阅读 · 2 评论 -
前后端分离模式下前端与后端数据交互
下面举的例子就是使用jQuery Ajax和Python Flask进行前后端交互时,前端提交表单数据到后端,后端返回JSON数据给前端。前端GET提交表单数据:# GET请求var data = { "name": "test", "test": "test",};$.ajax({ type: 'GET', url: /your/url/, ...原创 2019-02-19 14:04:14 · 15998 阅读 · 0 评论 -
REST详解
由于应用无论是内部的数据互通还是外部的合作,都需要展示相同的商业逻辑,现在越来越多的公司都让服务端的所有商业逻辑以RESTful API的方式暴露给客户端,这样减少了开发的复杂度,也得到了很好的拓展性。web程序的趋势是越来越多的业务逻辑被移到了客户端的一侧,即富互联网应用的架构,在RIA中,服务器的主要功能是为客户端提供数据存储服务,这种模式下,服务器变成了应用编程接口(API)REST架构...原创 2018-12-24 09:18:32 · 778 阅读 · 1 评论 -
SqlAlchemy做数据库缓存 -- dogpile.cache
dogpile是一种控制结构,它允许选择单个执行线程作为某些资源的“创建者”,同时允许其他执行线程在创建过程中引用此资源的先前版本。dogpile.cache是一个缓存API,它提供了一个通用接口来缓存任何种类的后端。首先安装dogpile:pip install dogpile.cache现在有很多有名的key/value服务比如说redis Memcached,他们都很适合用于缓存,...原创 2019-03-29 11:12:32 · 1627 阅读 · 0 评论