上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问。

随着Python的流行,直接用Python来部署Web服务器变成一个需求。但Python自带的Flask或传统的DJango都是基于阻塞io模型实现,性能上往往达不到生产环境大规模跑用户的需求。Tornado在底层io处理机制上和django以及flask有着根本的区别,采用了非阻塞io模型,也特别适合小程序用python实现服务端时的部署。

1. 确定Tornado的部署架构

下图是一般Tornado用作生产环境的标准部署架构。核心思想是在一台服务器上要运行多个tornado实例,然后使用nginx作反向代理服务器,nginx会把客户端请求中转到适当的tornado服务器进程。

运行多个Tornado进程实例的原因是同步请求时,在应用处理过程中(如数据库查询,磁盘访问),服务器进程不能接受新请求,所以需要运行多个服务器进程实例。而在异步请求时,在应用处理时,服务器进程是非阻塞的,可以接受新请求,因此tornado的非阻塞架构本身就很好地解决这个问题。

 

2. 云服务器比较

一般建议每个Tornado进程实例对应1个CPU,所以建议购买4核8G或者是8核16G的服务器。我们比较了腾讯云和阿里云的服务器价格,都是按照优惠价格比较,依然是腾讯云秒杀阿里云。

腾讯云的“云服务器三折起”优惠活动对4核8G和8核16G的服务器有超划算的优惠。见下图,左边选择“8核16G”,右边选择“重庆”,1年付可以拿到3.8折,才3149.59元。

左边如果选择“4核8G”的话,1年付将是2000元左右更优惠。一般情况下4核8G配置也已足够,但考虑“8核16G”只贵了1000元1年,在有预算的时候,不妨选择“8核16G”,当有突发负载时更有缓冲的余量。

 

与之相对应的阿里云,“性能级主机2-5折”是目前在搞的ECS优惠活动。类似的“8核16G”将需要4466元/年。如果只有3000元预算的话,只有购买4核8G云服务器,或者是“8核16G”的突发型实例(即负载不能一直跑满100%)。

 

3. NGinx配置

NGinx的反向代理安装和配置是运维标配了。我们这里着重两个环节,a) 反向代理到4个Tornado实例;b) 配置SSL。

下面所列的NGinx配置示例主要就考虑了这两点,重点关注upstream和ssl的配置。

user nginx;

worker_processes 5;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

use epoll;

}

proxy_next_upstream error;

upstream tornadoes {

server 127.0.0.1:8000;

server 127.0.0.1:8001;

server 127.0.0.1:8002;

server 127.0.0.1:8003;

}

server {

listen 443;

ssl on;

ssl_certificate /path/to/cert.pem;

ssl_certificate_key /path/to/cert.key;

server_name www.example.org *.example.org;

location /static/ {

root /var/www/static;

if ($query_string) {

expires max;

}

}

location / {

proxy_pass_header Server;

proxy_set_header Host $http_host;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Scheme $scheme;

proxy_pass http://tornadoes;

}

}

4. 利用Supervisor管理部署tornado进程。

详细操作可以参见这篇文章,使用python3+supervisor+nginx部署tornado

更多省钱秘笈,请看:

阿里云如何跨账号打通,多账号同时享受优惠

零门槛申请阿里云1万元代金券

阿里云超长6个月免费套餐汇总

阿里云包年包月服务器如何退款

小程序应用的Python服务器部署高配,依然是腾讯云秒杀阿里云!的更多相关文章

  1. 小程序[publib]:1 request:fail ssl hand shake error 如果用的是阿里云和宝塔那么如下解决

    小程序[publib]:1 request:fail ssl hand shake error 如果用的是阿里云和宝塔那么如下解决 宝塔里面的站点SSL右侧的配置(PEM格式) 需要把 阿里云 下载的 ...

  2. 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器

    阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 我在阿里云购买的服务器配置 CPU:1核 内存:2G 系统盘:40G 公共镜像:CentOS 6.5 64位 公网带宽:1Mbps ...

  3. 关于购买Redis服务器:腾讯云、阿里云还是华为云?

    个人分类: redis使用 编辑 新年伊始,很多商家都开始进行新年产品大促销,在分布是缓存Redis领域,几家大公司也是打得如火如荼,各有千秋啊. 现在市场上比较有口碑的商家有腾讯云.阿里云.华为云三 ...

  4. minium-微信小程序自动化框架-python,官方文档

    minium文档 个人将其部署到了自己的服务器上,如有需要可以访问共同学习这个minium 用python来实现小程序自动化测试... 文档地址 http://49.232.203.244:3000/ ...

  5. 微信小程序开发:python+sanic 实现小程序登录注册

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...

  6. 微信小程序-关于post 过来服务器没有获取到数据问题

    查看一下服务器接收的post 参数是以什么形式接收的 微信给出得demo 请求的方式是Json 参数传递的 所以如果服务器使用的from 表单形式接收数据需要更改微信小程序中的 header 将 he ...

  7. HBase跨地区机房的压测小程序——从开发到打包部署(图文版)

    今天做了一个跨地区机房的压测小程序,主要的思路就是基于事先准备好的rowkey文件,利用多线程模拟并发的rowkey查询,可以实现并发数的自由控制.主要是整个流程下来,遇到了点打包的坑,所以特意记录下 ...

  8. 20171018 微信小程序客户端数据和服务器交互

    -- 时常在想,怎么样才能把知识写的清晰,其实是我理解的不够清晰 微信小程序其实是一个客户端页面,也是需要和服务器交互才能体现数据. 1 --服务器搭建Web API :MVC4 中的一个模板, 如下 ...

  9. 微信小程序wx.request请求服务器json数据并渲染到页面

    [原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...

随机推荐

  1. [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

    近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...

  2. Gradle入门到实战(二) — ImageOptimization安卓图片转换压缩插件

    上一篇我们了解了Gradle的各个方面,本篇介绍一款安卓图片优化转换插件,目前已在项目中使用,可一键批量转换压缩图片,webp转换与png/jpg压缩就是那么简单 GitHub项目地址:ImageOp ...

  3. C# 语音合成

    1. 引用System.Speech 2. 通过SpeechSynthesizer类朗读文本 new SpeechSynthesizer().SpeakAsync("我们都是好孩子We're ...

  4. DML(数据操纵语言)

    1.概念(C) 数据操纵语言 DML (Data Manipulation Langua)是SQL语言的一个分类,用于对表的内容或者说数据进行增.删.改.查等操作. 通过以下几个关键字实现: SELE ...

  5. SpringIOC原理简述

    IOC:控制反转(Inversion of Control,英文缩写为 IOC) 简单来讲就是把代码的控制权从调用方(用户)转变成被调用方(服务端) 以前的代码控制权在调用方,所以要每当程序要更新修改 ...

  6. 设计模式之适配者模式——Java语言描述 | Amos H's blog

    适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模糊属于结构性模式,它结合了两个独立接口的功能 概念阐述 使用适配器模式可以解决在软件系统中,将一些旧的类放入新环境中,但是新环境要求的接口旧 ...

  7. 重庆3Shape TRIOS都有哪些功能

    1.高质量的临床结果高准确度的数字化印模确保高质量的修复体密合度即时制备和印模确认就位修复体时无需多次调整和研磨2.轻松取模无需喷粉扫描无需印模材料,可保持操作台整洁无需重复取模3.更稳健的业务联系加 ...

  8. 携程实时计算平台架构与实践丨DataPipeline

    文 | 潘国庆 携程大数据平台实时计算平台负责人 本文主要从携程大数据平台概况.架构设计及实现.在实现当中踩坑及填坑的过程.实时计算领域详细的应用场景,以及未来规划五个方面阐述携程实时计算平台架构与实 ...

  9. GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解

    Group By Group By 谁不会啊?这不是最简单的吗?越是简单的东西,我们越会忽略掉他,因为我们不愿意再去深入了解它. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 ...

  10. 如何使用SignTool签署应用程序包

    备注 有关签署UWP应用程序包的信息,请参阅使用SignTool签署应用程序包. 了解如何使用SignTool对Windows应用商店应用包进行签名,以便部署它们.SignTool是Windows软件 ...