couchdbkit比请求慢10倍?

时间:2012-12-10 19:24:25

标签: python couchdb python-requests

我正在使用couchdb和推荐的“couchdbkit”python包。我觉得它有点慢,决定做一些测量。如果我没有做错什么,那么使用流行的“请求”包比通过couchdbkit快10倍。为什么呢?

这是我使用的时间脚本:

from time import time as now
from pprint import pprint

class Timer:
    def __init__(self):
        self.current = now()

    def __call__(self, msg):
        snap = now()
        duration = snap - self.current
        self.current = snap
        pprint("%.3f duration -- %s" %(duration, msg))

def requests(num):
    t = Timer()

    import requests
    for i in range(num):
        r = requests.get("http://127.0.0.1:8001/releases/_design/access/_view/yieldlinks")
        assert r.status_code == 200
        r.json # make sure the json is there
    t("requests: %d" % (num,))

def couchdbkit(num):
    import couchdbkit

    t = Timer()
    server = couchdbkit.Server("http://127.0.0.1:8001")
    releases = server.get_db("releases")
    for x in range(num):
        for x in releases.view("access/yieldlinks"):
            pass
    t("couchdbkit: %d" %(num,))

num = 500
requests(num)
couchdbkit(num)

要运行该示例,您可能需要修改视图URL。我验证了这两个调用导致服务器上完全相同的GET请求。所以这似乎与couchdbkit的内部工作有关?!

1 个答案:

答案 0 :(得分:2)

所以我终于找到了这个问题,它实际上和这个问题一样:

CouchDB / MochiWeb : negative effect of persistent connections

简而言之,添加:

[httpd]
socket_options = [{nodelay, true}]

解决了性能差异 - 事实上,couchdbkit / restkit现在更快了。

相关问题