我正在使用facebook python图形API。当我调用put_对象以写入新闻提要时,大约需要12-14秒才能完成调用。当我在命令行中使用具有相同参数的curl运行时,我将在1.2秒内得到响应。
我在python代码上运行了profiler,从中可以看出它在socket.recv中花费了99.5%的时间。我不确定这是否是facebook python sdk或其他东西的问题。
我在Python2.6上。我从facebook.py上看到它正在使用urllib。

    file = urllib.urlopen("https://graph.facebook.com/" + path + "?" +
                          urllib.urlencode(args), post_data)

有人经历过类似的减速吗?如有任何建议,将不胜感激。

最佳答案

直接命令行CURL一定比urllib或urllib2快。如果需要速度,可以使用pycurl(这也是一个C扩展)替换调用,而urllib是编写在httplib之上的python模块。
你还可以做的是,如果你足够灵活,可以使用龙卷风服务器,使用TynADO的异步调用方,它直接与套接字对话,也是异步的。
此外,如果无法完成这些操作,请尝试用urllib2替换urllib,并使用回调返回创建非阻塞调用程序。这就是我为改进facebook/twitter/amazon等的原生第三方包装所做的一切。

关于python - 与命令行curl相比,python facebook sdk对facebook的调用速度较慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5131262/

10-12 00:34
查看更多