Django应用的Cython:它会工作吗?



是否可以在python 3.4 Django应用程序中编译,或者可以在没有大量努力的情况下工作?

这个关于保护python代码的问题的答案- https://stackoverflow.com/a/7347168/805141促使我问这个问题。

以前也有人问过类似的问题,但是是关于提高性能的:使用Cython和Django。这有意义吗?

是的,我们做到了。但它始终疼痛。

我们制造了一个商业产品,安装在客户的前提下,以管理他们的Genesys电力联络中心。应用程序的核心是用Django编写的,我们想保护(限制)代码不被检查。

在原生python中运行时速度有所提高,但差别不大。这种改善取决于任务的类型,有时高达30%,有时很少。

我们不时遇到一些问题,有些东西在Python中可以工作,但在Cython中却不能。除非你有很好的动机,否则我不会推荐你走这条路。

当前版本运行在Python 3.5和Django 1.11上

我知道现在回答已经太晚了。尽管这可能会有帮助。我已经在项目主目录下创建了一个setup.py文件。

from distutils.core import setup
from Cython.Build import cythonize
fileSet = set()
fileSet.add("app1/file1.py")
fileSet.add("app2/file2.py")
fileSet.add("app3/file3.py")
setup(
   ext_modules=cythonize(fileSet)
)

扫描你的应用程序目录,并将你想编译的文件添加到fileSet。File1.py, file2.py和file3.py只是示例。

最后,运行setup.py文件,如下所示

python setup.py build_ext --inplace 

然后Cython开始编译每个文件,并将其设置为。so文件。例如:app1/file1。所以app2/file2。所以app3/file3.so

这些文件是共享的目标文件,您无法手动解释。删除所有.py和.pyc文件。然后以

方式运行项目
python manage.py runserver

或者您可以将这些二进制文件托管在您的生产服务器中。我在NGINX, uWSGI上试过了。

好运。

请检查使用Cython编译django项目的djcompiler包。https://github.com/abdoohossamm/djcompiler

run pip install djcompiler

然后转到项目目录并运行djcompiler buildfile在.djcompiler文件中编辑你的配置。run djcompiler compile

相关内容

最新更新