跬步 On Coding

树莓派与XBMC

Raspberry Pi刚开卖的时候,我就买了,那时候买来就是为了玩Linux,装了Raspbian,写写Python程序,玩玩GPIO什么的,很Geek范,然后就放在角落里落灰了。

直到去年双11在淘宝抢了个天猫魔盒送给我姐,才发现原来在电视上看电影,看美剧真心比电脑爽多了。立马就买了个二手22寸显示器跟树莓派组合成网络电视。折腾了1年多这里总结我用XBMC的经验。

OpenELEC

支持Raspi的XBMC系统有OpenELEC,Raspbmc,XBian。一直以来都是用的OpenELEC,在支持XBMC的几个发行版中,OpenELEC是最快的。

OpenELEC 当前版本为6.0.6,下载: > http://mirror.overthewire.com.au/openelec/OpenELEC-RPi.arm-6.0.3.tar

使用MongoDB

参考

简介

MongoDB是一个流行的NoSQL数据库程序,MongoDB使用起来比较像关系数据库,比较容易上手,由于使用BSON(一种二进制的json)格式数据,所以能使用python原生的字典数据类型来存储,相比MySQL操作跟简单。

Memcached 优化 MySQL 查询

简介

跬步上线后,SAE后台显示云豆的消耗http与MySQL查询各占一半,正好SAE还支持Memcached,本着不用白不用的原则,为db.py加上了Memcached的缓存支持。

网站在并发不大的情况下,MySQL查询时间还感受不出来,但是如果并发大的化,MySQL会显著的降低响应速度,所以Memcached应运而生。

Memcached是一个分布式的内存key-value存储系统,由于数据保存在内存中所以查询速度非常快,一般作为其它数据的中间缓存层来使用。

对于SQL查询先以SQL语句为key查询Memcached,如果查到直接返回,如果没有再去查询MySQL,并把结果缓存到Memcached,下次再次查询时速度显著提升,因为Memcached的数据是保存在内存中的。

Jinja2 模版引擎

参考

API

from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader(templ_dir))

Python Web farmwork

简介

上一节写了WSGI与Cookie相关的内容,为了方便的实现Web App,需要编写一个简单的Web框架,需要实现以下功能:

  1. 处理request;
  2. 生成response header;
  3. 根据request URI找到对应处理的函数,即URL路由;
  4. 定制模版引擎;
  5. 拦截器,在处理函数产生响应前,做预处理,相当于WSGI中middlware的概念,比如处理Cookie等。