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

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

随着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个月免费套餐汇总

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

原文地址:https://www.cnblogs.com/yunmanong/p/10710866.html

时间: 2024-08-09 15:03:36

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

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

查看一下服务器接收的post 参数是以什么形式接收的 微信给出得demo 请求的方式是Json 参数传递的 所以如果服务器使用的from 表单形式接收数据需要更改微信小程序中的 header 将 header: { 'content-type': 'application/json' }, 改成 header: { 'content-type': 'application/x-www-form-urlencoded' },

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

今天做了一个跨地区机房的压测小程序,主要的思路就是基于事先准备好的rowkey文件,利用多线程模拟并发的rowkey查询,可以实现并发数的自由控制.主要是整个流程下来,遇到了点打包的坑,所以特意记录下. 编写代码 rowkey文件的准备就不说了.首先是HbaseClient的查询接口,由于创建连接的代价很重,因此这里采用HBase的ConnectionFactory工厂: static { try { Configuration conf = HBaseConfiguration.create(

微信小程序wx.getLocation()获取经纬度及JavaScript SDK调用腾讯地图API获取某一类地址

简介 腾讯位置服务为微信小程序提供了基础的标点能力.线和圆的绘制接口等地图组件和位置展示.地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品. 在此基础上,腾讯位置服务微信小程序JavaScript SDK是专为小程序开发者提供的LBS数据服务工具包,可以在小程序中调用腾讯位置服务的POI检索.关键词输入提示.地址解析.逆地址解析.行政区划和距离计算等数据服务,让您的小程序更强大! 有时候我们在做微信小程序时有些功能需要获取当前的地理位置及附近地点的一些要求,但是

小猪佩奇社会人专用服务器,有意思的python小程序,附python代码

最近社会人小猪佩奇挺热门的,大家都在说社会人,那么我们作为IT人,怎么让我们的服务器也蹭一下社会人的热点的?下面来给大家说说. 先来个效果图: 小猪佩奇社会人专用服务器 哈哈,这样是不是挺有意思的?工作已经很无聊了,如果再不找点乐趣,那还怎么干活? 说说怎么实现的吧,其实这个是通过python代码实现的,而且代码仅仅只有30行. 需要说明的是,这个python代码不仅仅能转换小猪佩奇社会人,而且还能转换各种图片,比如佛祖啊什么的,只要你有色彩对比度差不多的图片,都可以进行转换. 如下图,我换了个

购物车小程序的实现 python 进阶第五课

图片是要求,那么开始做吧. 假装我还不会使用def, 其实我现在真的没学def. product_list = ["1.iphone6s 5800元","2.mac book 9000元","3.coffee 32元","4.python 80元","5.bicyle 1500元"]product_cart = [] salary = int(input("请输入你的工资是多少>>&g

php 截取 小程序上传到服务器图片,

截取字符串传入数据库 $f_slide = htmlspecialchars_decode($_REQUEST['f_slide']); // echo "<pre>";print_r($f_slide);echo "</pre>"; $arr=substr($f_slide,1,strlen($f_slide)-1); echo "<pre>";print_r($arr);echo "</pr

我想开发一款小程序,怎样才能快速上手并上线?

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 2017 年 1 月 9 日,微信正式发布了小程序应用.之后,我们陆续收到了一些开发者留言和反馈.这里面,问最多的就是: 我是做开发的,但我没做过小程序开发,现在,我想快速开发一款的小程序,怎么办? 直到如今,类似这样的问题还在不断地涌现. 为此,本期云+社区技术沙龙,邀请来自腾讯云.微信.NOW直播.有赞等行业顶级技术专家,于4月28号首赴上海,从技术实战的角度,分享最全面的微信小程序设计思路以及开发方案,将你领进「小程序开发」的大门

Python 登陆接口小程序V1

Python 登陆接口小程序版本V1 Python #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import MySQLdb as mysql import datetime class Authon(object):     def __init__(self):         self.db = mysql.connect(user="root", passwd="[email prot

Python 练习册,每天一个小程序

Python 练习册,每天一个小程序 说明: Python 练习册,每天一个小程序.注:将 Python 换成其他语言,大多数题目也适用 不会出现诸如「打印九九乘法表」.「打印水仙花」之类的题目 点此链接,会看到每个题目的代码, 欢迎大家 Pull Request 出题目,贴代码(Gist.Blog皆可):-) 本文本文由@史江歌([email protected] QQ:499065469)根据互联网资料收集整理而成,感谢互联网,感谢各位的分享.鸣谢!本文会不断更新. Talk is chea