在Twisted下用MySQL adbapi获取自增id

D jango的ORM有一个很便捷的功能,其实也应该说是一个很基本的功能吧。就是在对一个model调用 save() 插入到数据库后,会将创建的自增id同步到当前model上。SQL中调用 INSERT 默认的返回值是插入的行数,就目前的应用来说,其实是一个没啥意义的返回值,所以Django的ORM能够处理好自增id的同步是一件很让人愉悦的事。

不过没有使用Django,最近用的是Twisted提供的adbapi,如何获取自增id呢?

继续阅读

发个小开源项目: asphinxapi

周我刚发了一篇文章,讲找到了一个twisted 版的sphinx。当时也只是随便看了一下,就拿出来推荐了。但是等到真正细看的时候却发现问题多多。最关键的是这玩意儿目前的版本每个client只能 发起一次请求,之后的所有请求全部咯屁。由于本人比较懒,再去抓包嫌麻烦,同时又觉得看别人的代码不如自己写的快,所以干脆自己写一个得了。

继续阅读

twisted版的sphinx search

年头,搞网络的都得来点异步才算时髦。为啥要异步呢?你想啊,通常同步的程序,在调用函数的时候都是呆呆地等在那儿的,要是说调用的函数是CPU bound的那还好说,起码资源没啥浪费。可是网络程序大部分应该还是IO bound的吧,等IO的这茬儿你不让CPU做点其他事情,还真对不起CPU这张老脸。

继续阅读

自定义twistd plugin的log格式

近学习twisted,从最初的直接调用reactor,到twisted app,最后到twisted plugin,一路用下来感觉还是挺顺手的。不过有一个问题挺郁闷的,就是没弄清楚怎么自定义输出的log格式。

我的需求应该还是挺简单的:

  1. 输出如同 20|YY-DD-MM HH:mm:ss|Foo service starting 这样的log格式,前面的数值和 logging 里面的相应log level对应
  2. 可以根据运行时的设置忽略某些level的消息

由于咋一眼没在文档里找到自定义的方法,便Google了一阵子,可只找到在maillist里有人和我有同样的需求,解决办法却没有见到……

继续阅读