SAE的Tornado開發經驗

對程序員來講,新浪雲SAE無疑是國內最好的PaaS平臺,實名認證和綁定移動端獲得的免費雲豆,可讓你在作出一款能擡起頭的應用以前不愁吃喝。
因此這一年裏作過的網站和應用,第一個版本都是起於SAE。
對於Python的網絡框架,小2本來專攻大路貨Django,工做中被一高手點醒後,開始迷醉於Tornado的快。對,並非非阻塞的快,並且開發的快,極適合作先後端分離、以JSON傳遞數據的模式。
人老怕忘,隨手記記Tornado在SAE上的坑。python

ORM的選擇

sqlalchemy既不簡潔又缺少一致性,但建表、重連、SQL包裝、鏈接池這些dirty job總得有人作。sqlalchemy的使用必須注意如下問題:git

鏈接的建立和關閉程序員

由於SAE的MySQL超時時間設置得很短(10秒左右),所以在網絡鏈接關閉的時候必須同時關閉數據庫鏈接。最好的辦法是都繼承一個BaseHandler。github

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

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

縮短重連時間web

由於超時時間比MySQL的通用配置要短,因此sqlalchemy的重連時間也必須同步,不然會報「MySQL has gone away」的2006數據庫錯誤。個人配置僅供參考:sql

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傳送門:SAETornadocookie

來自:建造者說網絡

相關文章
相關標籤/搜索