资讯专栏INFORMATION COLUMN

SAE的Tornado开发经验

stackfing / 2919人阅读

摘要:对,并不是非阻塞的快,而且开发的快,极适合做前后端分离以传递数据的模式。的选择既不简洁又缺乏一致性,但建表重连包装连接池这些总得有人做。缩短重连时间因为超时时间比的通用配置要短,所以的重连时间也必须同步,否则会报的数据库错误。

对程序员来说,新浪云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。

  

来自:建造者说

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45335.html

相关文章

  • 应用云平台可用性——从新浪SAE看云平台设计

    摘要:网络可用性更多的会依赖电信运营商的服务能力。目前网络接入支持电信联通教育移动等,真正实现了国内大的运营商网络的覆盖,这在国内是很罕见的。 一、可用性如何定义 可用性(availability)是关于系统可供使用时间的表述,以不可用的时间为衡量指标。不可用时间越短,可用性越高。通常用n个9来描述。比如4个9的可用性,则是指一年中不可用时间在52分钟内,平均每周不可用时间在1分钟。 可靠性...

    yanbingyun1990 评论0 收藏0
  • itchatmp:完备优雅微信公众号接口

    摘要:是一个开源的微信公众号企业号接口,使用调用微信公众号从未如此简单。截屏进阶使用企业号配置在配置时设置而非即可。另,由于企业号没有明文模式,所以必须将加密模式设置为安全。同样,删除以后就变回了线程池版本。 itchatmp showImg(https://segmentfault.com/img/remote/1460000005658808);showImg(https://segme...

    wenyiweb 评论0 收藏0
  • 新浪SAE使用经验

    我是标题党,十五字,十五字,十五字,十五字

    XBaron 评论0 收藏0
  • 新浪SAE使用经验

    我是标题党,十五字,十五字,十五字,十五字

    ChristmasBoy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<