2010年3月5日星期五

Twitter的100亿条信息带来的BUG

  今天上午的Twitter信息统计显示,Twitter信息发送总量已经突破100亿条。此时距离Twitter信息总量突破50亿条仅过去5个月。

  这个消息对Twitter来说是个好消息,但对于使用我先前开发的GAE同步程序的用户来说是个灾难,因为原先程序有个BUG,在Twitter信息量大于100亿条的时候会出现,导致用户的Twitter的ID号码在10000000000之后的信息会反复发布。

  造成这个问题的原因是因为原先的数据排序通过id号进行,当id号升到11位的时候,该数据的排序错误,反而排在10位的id号后面。

  目前我已经做了一个补丁程序twitter.py,修正了这个错误,使用时间来进行排序,彻底解决了这个问题,原先使用我这个程序的用户,请下载最新的twitter.py代码后重新发布,就会解决信息重复同步的问题。

  手动修改方法:找到id=db.StringProperty()一行,在后面增加一行created = db.DateTimeProperty(auto_now_add=True) 。找到msg=db.GqlQuery("SELECT * FROM Twitter ORDER BY id DESC")一行,将其修改为msg=db.GqlQuery("SELECT * FROM Twitter ORDER BY created DESC"),最后使用appcfg.py更新即可。

  项目地址:http://code.google.com/p/twitter-feed/

  SVN Checkout地址:http://twitter-feed.googlecode.com/svn/trunk/