BSON功能影响性能 - 取决于安装

时间:2014-09-11 11:59:57

标签: python django pymongo bson

我正在使用MongoDB / pymongo处理一个相当复杂的Django应用程序。 在我的本地开发环境中,使用Django服务器,我获得了不错的性能。当我移动到远程服务器,在Apache下运行时,有pymongo / BSON方法需要花费大量时间。在我的本地安装中,这些方法似乎并未在所有中被称为。我无法找到导致PyMongo行为发生这种变化的显着差异。

以下是远程服务器呼叫中的一系列分析。同样,这些函数根本不会在本地调用。

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    ...
        684    0.007    0.000   10.042    0.015 __init__.py:497(decode_all)
 102704/735    1.193    0.000   10.035    0.014 __init__.py:325(_elements_to_dict)
546543/4233    2.549    0.000   10.025    0.002 __init__.py:314(_element_to_dict)
101969/1170    0.450    0.000    9.930    0.008 __init__.py:153(_get_object)
101448/1045    0.963    0.000    9.917    0.009 __init__.py:168(_get_array)

1 个答案:

答案 0 :(得分:2)

这是通过使用C扩展编译PyMongo来解决的。 MacOS二进制文件附带自动编译的这些扩展,如果不满足依赖性,Linux安装不会安装它们。

详情为here

简而言之 - 安装依赖项:

关于Debian:

sudo apt-get install build-essential python-dev

On RedHat:

sudo yum install gcc python-devel

然后重新安装PyMongo:

pip install --upgrade pymongo

并享受性能提升。