月光博客 » 编程开发 » Twitter的100亿条信息带来的BUG

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/

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 1
    fuq   说道:
    不知什么办法可“跟随我的推特”,总是显示 “位于 http://twitter.com/williamlong 的网页可能暂时无法连接,或者它已被永久性地移动到新网址。”,有何办法接入?
    支持(17反对(6回复
  1. 2
    乘风归来兮   说道:
    我为twitter贡献了0.0000...1%信息
    支持(10反对(5回复
  1. 3
    裸奔的鱼   说道:
    我传上新文件还是不行呢,还在重复。看你在推上说要批量删除gae数据库里的id号。这个程序已经执行此操作了吗,如果没有该怎么清空呢。
    支持(11反对(7回复
  1. 4
    紧急求助   说道:
    今天我的所有电脑都不能登录WPS在线文档,其中三台是连电信宽带的,一台是连联通宽带的。上午已经登录的电脑被发现不能打开在线文件,下午才想登录的电脑输入用户名和密码之后就一直在不停的与服务器进行连接始终无法登录了。超级无敌郁闷呀,由于对谷歌的超级崇拜和信任,所以一直都在使用WPS在线文档,并且大部分重要的文档都是存放在WPS在线文档上。这一下就让我全线停机了。。。
    支持(13反对(9回复
  1. 5
    螃蟹有所谋   说道:
    Error: Server Error
    The server encountered an error and could not complete your request.

    If the problem persists, please report your problem and mention this error message and the query that caused it.

    显示上面的,今天的一直无法同步!请楼主解决一下,谢谢!
    支持(11反对(7回复
  1. 6
    napbonking   说道:
    新浪貌似又封了gae的ip。。然后follow5的貌似同步不过去。。一定要申请api?。。
    williamlong 于 2010-3-8 17:34:06 回复
    的确又封了。没办法啊。
    支持(10反对(6回复
  1. 7
    elapsezyh   说道:
    如果同时开了许多支同步,其中有一个不能用就会影响其他,我把我用的几个分别在GAE里建独立的app试了一下,貌似网易和ping.fm是可用的,sina、digu不可用
    另外hellotxt也不可用,我在hellotxt里面申请了一个app,得到了user_key和API_key,但下面显示了一行This application is not enabled.不知如何解决。。。
    支持(10反对(6回复
  1. 8
    老实人博客   说道:
    新浪有这个东东?去看看。
    支持(8反对(4回复
  1. 9
    kk   说道:
    请问如果想同步官方RT该怎么改?
    支持(9反对(5回复
  1. 10
    lobskiin   说道:
    同 同上
    支持(9反对(6回复
  1. 11
    NM   说道:
    希望大家别上推特!
    支持(9反对(7回复
  1. 12
    怡红公子   说道:
    汗,果然是程序出问题了……T_T我的sina微博已经彻底沦陷了……
    支持(9反对(7回复
  1. 13
    williamlong   说道:
    嘀咕把GAE的IP封了,因此会导致其他帐号如新浪微博、网易微博等出现刷屏现象,现在同步的同学请先将嘀咕的帐号注释一下,等嘀咕将来取消封锁后再添加。
    怡红公子 于 2010-3-8 17:45:38 回复
    原来如此……不过……偶就是想同步嘀咕啊……额,看来没办法了……==我还是先用下那个PHP版的急用吧……
    支持(10反对(8回复
  1. 14
    创意网   说道:
    不知道问题出在哪里?
    支持(9反对(7回复
  1. 15
    月落天涯   说道:
    八百年发布一次……还要翻墙 郁闷
    支持(8反对(7回复
  1. 16
    RayChow   说道:
    = = 我杯具了好长时间
    支持(9反对(8回复
  1. 17
    sevenseven   说道:
    请教一下为啥新浪的无法同步?网易的可以了,检查过新浪的用户、密码都没有错误,怎么就不行呢,难道是因为用hotmail邮箱而不是新浪邮箱的缘故吗?
    williamlong 于 2010-3-5 19:57:37 回复
    新浪把GAE的IP封了。
    Allen 于 2010-3-6 14:31:43 回复
    我的sina还能同步,可是以前的那个Twitter.py总是要重复的提交,郁闷。这下好了 Thanks! William
    支持(6反对(5回复
  1. 18
    anndi   说道:
    难怪sina同步不上去了!
    支持(7反对(6回复
  1. 19
    napbonking   说道:
    能不能写个写入微博通的呢。。
    支持(7反对(6回复
  1. 20
    LAONB   说道:
    你的PY是指python吗?老胸,你好专业。
    支持(11反对(10回复
  1. 21
    袋鼠网迹   说道:
    呵呵、、同样的一件事就可能带来两种截然不用的影响,这样的100亿对TWITTER来说真不知道是洗具还是杯具啊!!
    支持(5反对(4回复
  1. 22
    zackfly   说道:
    我的新浪也是不断重复相同的微博
    支持(8反对(7回复
  1. 23
    Dave   说道:
    晕,难怪,我新浪微博那边都已经刷屏了1000条了近~差点被封号~
    火恋神父 于 2010-3-17 11:34:17 回复
    我的已经被封了!
    还好有两个号!!
    支持(8反对(7回复
  1. 24
    Bronco   说道:
    之前我也是修改之后仍然重复发布,后来把GAE的datastore清掉就好了。另外似乎digu无法进行同步了?直接访问api地址不断弹出身份验证对话框,莫非账户被ban了?
    napbonking 于 2010-3-7 13:33:03 回复
    嘀咕。。我一旦同步嘀咕。。新浪网易方面就不断重复。。一取消嘀咕就不重复= =。。每次update都清除了datastore的了
    Bronco 于 2010-3-7 20:45:14 回复
    update似乎不会自动清除datastore,需要进到控制台,打开datastore view,将数据全部删除。反正我删除之后就好了,目前能正常更新Sina,嘀咕不行,似乎API有问题。
    支持(11反对(10回复
  1. 25
    luodhs   说道:
    我只同步到FOLLOW5的,再转发到其他微博.昨天好像又不能用了.
    支持(7反对(6回复
  1. 26
    napbonking   说道:
    啊。。新浪又解封了gae貌似
    支持(10反对(9回复
  1. 27
    兽兽门   说道:
    我是自己修正的这个bug
    支持(7反对(6回复
  1. 28
    jackhz   说道:
    月光兄Python技术炉火纯青啊,
    短短几行代码,就搞定了
    支持(9反对(8回复
  1. 29
    小乐   说道:
    收到,等F5恢复key中...
    支持(7反对(7回复
  1. 30
    skylong0   说道:
    同上,暂时关掉了
    支持(11反对(11回复
  1. 31
    囧囧儿   说道:
    10亿…太可怕了
    支持(13反对(13回复
  1. 32
    S   说道:
    重复問題突然出现了,上午还好好的.中午过后似乎就出問題了.
    支持(9反对(9回复
  1. 33
    napbonking   说道:
    重复问题突然又出现了?!
    支持(9反对(9回复
  1. 34
    SUN   说道:
    你好,月光兄。
    我更新你的代码后,且更换了follow5的新api,以及删除了id为100亿之后的推,但还是出现了重复推消息的问题。

    我设置的是同步到sina,follow5, digu, ping.fm。现在的结果是sina不停在推我一条id号小于100亿的推,而其他的微博则没有更新。

    我确信已经更新完毕GAE,不知道问题出在哪里?
    支持(7反对(7回复
  1. 35
    虫虫   说道:
    谢谢月光~立刻去看下能不能解决。。。
    支持(7反对(8回复
  1. 36
    玩家博客   说道:
    呵呵,看不懂,回家睡觉>>>>>>>>>>>>>>>>>>>>>>
    支持(8反对(9回复
  1. 37
    IT面试题   说道:
    100亿,太厉害了
    支持(9反对(10回复
  1. 38
    怡红公子   说道:
    为啥米我的定时执行总是失败捏?求解啊^
    怡红公子 于 2010-3-8 13:04:13 回复
    把嘀咕取消掉之后就正常了,汗!
    支持(5反对(6回复
  1. 39
    wesai   说道:
    真是个高手,学习了,谢谢了。
    支持(5反对(7回复
  1. 40
    虎虎生威   说道:
    纯技术贴啊,学习了
    支持(6反对(8回复
  1. 41
    ejutou   说道:
    代码太复杂了,看不懂
    支持(7反对(9回复
  1. 42
    qingshi163   说道:
    诺顿的2010BUG..哈哈
    支持(5反对(7回复
  1. 43
    沿阶草   说道:
    用了升级昨天都好好的。只有sina和F5。
    今天网易那边又重复不断,不知道为什么。又有问题。
    看月光你自己的却很正常,我RP问题?
    anndi 于 2010-3-6 22:31:42 回复
    更新后依旧重复发布,主要是163和新浪,只好暂停程序了
    支持(7反对(9回复
  1. 44
    keon   说道:
    新浪和网易的一直再重复~~~HELP
    支持(5反对(7回复
  1. 45
    anubiszxm   说道:
    现在程序不更新了,昨天SINA那里不停的重复GAE IP被封
    支持(6反对(8回复
  1. 46
    shiqianlu   说道:
    原来是这个原因.
    人家直接骂我是畜生,刷屏刷的.汗

    看了大家的留言,自己申请F5的API吧,很好申请的.
    然后新浪,嘀咕什么的直接从F5过去.
    支持(11反对(13回复
  1. 47
    JUSTBB   说道:
    不错,厉害。
    支持(7反对(10回复
  1. 48
    kenneth   说道:
    信息在精不在多吧?
    支持(7反对(10回复
  1. 49
    kenneth   说道:
    Twitter 怎么不早些发现这个问题呢?
    支持(6反对(9回复
  1. 50
    leon   说道:
    终于等到你这篇文章了,晚上回去试试
    支持(6反对(9回复
  1. 51
    FlyChina   说道:
    鄙视一下,我的sina微播因为这个bug少了近三分之一的follower。
    支持(4反对(7回复
  1. 52
    williamlong   说道:
    腾讯微博今晚开放应该是谣言,也可能是炒作,要真的开也不会选在晚上开啊,人家都下班回家去了,而且现在正是两会期间。
    支持(3反对(6回复
  1. 53
    zackfly   说道:
    新浪微博那个GAE的IP还会解封吗?
    williamlong 于 2010-3-6 13:32:04 回复
    现在已经解封了。
    Sevenseven 于 2010-3-8 8:50:08 回复
    解封了?我的还是没法同步新浪。
    Jeff 于 2010-3-8 10:01:22 回复
    貌似又给封了
    支持(7反对(10回复
  1. 54
    flyingkk   说道:
    更新之后还是会重复同步
    支持(7反对(10回复
  1. 55
    一心而已   说道:
    没看太懂 10亿条确实恐怖。信息爆炸了
    支持(6反对(9回复
  1. 56
    JASE   说道:
    到底是怎么回事呢
    支持(7反对(10回复
  1. 57
    lzlh   说道:
    杯具了,更新程序后都不同步了。
    我只更新了twitter.py。以前可以右键点击“链接另存为”保存,现在不知为何这样保存下来的文件非常大,有60多kb,但看你的文件列表,twitter.py只有8.6kb啊,在ff里打开twitter.py后复制粘贴到写字板里保存为unicode格式的文本文件有22kb,这样做有没有问题呢?
    裸奔的鱼 于 2010-3-5 14:37:37 回复
    回9楼

    你不能那样下载程序,那样保存下来的是个嵌带着html代码的文件。你可以只复制那个py文件的代码,复制到文本文档然后另存为twitter.py文件。最好还是按照原先的下载方式,用suv检测http://code.google.com/p/twitter-feed/source/browse/trunk ,直接重新来一遍。

    上传新文件后,貌似还会把100亿以后的消息重新发一遍,然后就恢复正常了。

    还有把".find('@',1) == -1"改为".startswith('@',1) == False" (不含引号)可以达到只转RT,不转@的效果。我没学过Python,自己找的函数,请月光老师鉴定。
    纯粹 于 2010-3-5 14:41:29 回复
    上面给的那个是链接页面,不是py文件,打开后再点右边那个才是下载。假如你直接另存为的话,是一个htm文件
    lzlh 于 2010-3-5 14:57:52 回复
    我晕了,我把代码复制粘贴到pythonWin程序,显示正常,保存后再用pythonwin打开,就显示的全是等号了
    支持(4反对(8回复
  1. 58
    S   说道:
    非常感謝~等候F5~既然新浪封了GAE的IP,還是有F5這個途径的呢.
    支持(5反对(9回复
  1. 59
    Hivan   说道:
    怎样在从新下载的twitter.py内确定自己的twitter和其他微博账号呢?我找了半天没找到,还是只要从新上载就可以了?那么如果有什么差错需要从新发布该如何?
    支持(3反对(8回复
  1. 60
    frank   说道:
    新浪把GAE封了?????
    leon 于 2010-3-24 11:08:51 回复
    同问月光:新浪不能同步了?
    支持(7反对(12回复
  1. 61
    纯粹   说道:
    follow5的那个公共API是被封掉了吗?无法同步到follow5了
    williamlong 于 2010-3-5 15:30:53 回复
    follow5的那个api暂时停了,等大家都更新到新代码之后可能会恢复。
    支持(4反对(11回复
  1. 62
    名人博客   说道:
    果然是高手,不错,用了
    支持(4反对(11回复
  1. 63
    fly   说道:
    已经确认更新了GAE代码 了,但还是一直重复。。。
    支持(7反对(15回复

发表留言