当前位置: 首页 > news >正文

SAE的Tornado开发经验

对程序员来说,新浪云SAE无疑是国内最好的PaaS平台,实名认证和绑定移动端得到的免费云豆,可以让你在做出一款能抬起头的应用之前不愁吃喝。
所以这一年里做过的网站和应用,第一个版本都是起于SAE。
对于Python的网络框架,小2原本专攻大路货Django,工作中被一高手点醒后,开始迷醉于Tornado的快。对,并不是非阻塞的快,而且开发的快,极适合做前后端分离、以JSON传递数据的模式。
人老怕忘,随手记记Tornado在SAE上的坑。

ORM的选择

sqlalchemy既不简洁又缺乏一致性,但建表、重连、SQL包装、连接池这些dirty job总得有人做。sqlalchemy的使用必须注意以下问题:

连接的创建和关闭

因为SAE的MySQL超时时间设置得很短(10秒左右),因此在网络连接关闭的时候必须同时关闭数据库连接。最好的办法是都继承一个BaseHandler。

pythonclass BaseHandler(tornado.web.RequestHandler):
    def initialize(self):
        self.session = DB_Session()

    def on_finish(self):
        self.session.close()

缩短重连时间

因为超时时间比MySQL的通用配置要短,所以sqlalchemy的重连时间也必须同步,否则会报「MySQL has gone away」的2006数据库错误。我的配置仅供参考:

pythonengine = create_engine(db_config, pool_recycle=5, poolclass=NullPool)

secure_cookie

一般都会选择Tornado的secure_cookie作为账号的惟一凭证,上线必须找一个不改变(重新部署后之前的cookie不失效)也不容易让外人得知的字符串做密钥。我应用的secret_key:

pythoncookie_secret = 'test' if debug else sae.const.SECRET_KEY

日志

SAE的logging默认级别是warning,所以logging.info('')是不会生效的,最好在入口处设置:

pythonlogging.basicConfig(level=logging.INFO)

余不一一,GitHub传送门:SAETornado。

来自:建造者说

相关文章:

  • Android中Context详解 ---- 你所不知道的Context
  • JPA学习笔记(一)
  • android setResut intent ==null?
  • PHP查询MySQL大量数据的内存占用分析
  • 网络工程师
  • MailGorupMemeber Export to excel
  • 人工智能博弈树算法做的井字棋游戏
  • CSS z-index 属性
  • Error No matching provisioning profiles found
  • 微软消息分析器(Microsoft Message Analyzer )更新至1.2版-2015-1-20
  • java的动态代理机制详解
  • 查询句柄引用计数源码
  • PHP 启动 cURL模块以及启动失败的解决方案
  • selenium webdriver 学习笔记(三)
  • 4在二元树中找出和为某一值的所有路径
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Angular数据绑定机制
  • Apache的80端口被占用以及访问时报错403
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • docker-consul
  • EOS是什么
  • ES6系统学习----从Apollo Client看解构赋值
  • Java新版本的开发已正式进入轨道,版本号18.3
  • js面向对象
  • PHP CLI应用的调试原理
  • rc-form之最单纯情况
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Twitter赢在开放,三年创造奇迹
  • 从tcpdump抓包看TCP/IP协议
  • 技术发展面试
  • 山寨一个 Promise
  • 试着探索高并发下的系统架构面貌
  • 学习Vue.js的五个小例子
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • ​ssh免密码登录设置及问题总结
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (function(){})()的分步解析
  • (pojstep1.3.1)1017(构造法模拟)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (编译到47%失败)to be deleted
  • (论文阅读30/100)Convolutional Pose Machines
  • (区间dp) (经典例题) 石子合并
  • (算法二)滑动窗口
  • (转)ObjectiveC 深浅拷贝学习
  • ../depcomp: line 571: exec: g++: not found
  • .jks文件(JAVA KeyStore)
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net Stream篇(六)
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET性能优化(文摘)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET学习全景图
  • @基于大模型的旅游路线推荐方案
  • [ 转载 ] SharePoint 资料