繁体   English   中英

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

[英]Cython for a Django app: would it work?

使用 cython 进行编译是否可以与 python 3.4 Django 应用程序一起使用,或者它是否可以在不付出大量努力的情况下工作?

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

之前已经问过一个类似的问题,但关于提高性能: Using Cython with Django.Does it mean sense?

是的,我们已经做到了。 但它始终如一的痛苦。

我们制造商业产品,安装在客户端,以管理他们的Genesys电力联络中心。 该应用程序的核心是用Django编写的,我们希望保护(限制)代码免受检查。

在本机python中运行可以提高速度,但这并没有太大的差别。 改进取决于任务的类型,有时最高可达30%。

我们不时遇到问题,其中某些东西在Python中有效,但在Cython中却没有。 除非你有很好的动力,否则我不会推荐这条道路。

目前版本使用Django 1.11在Python 3.5上运行

我知道现在回答已经太晚了。 即使它可能会有所帮助。 我在项目主目录中创建了一个 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 stats 编译每个文件并使其成为 .so 文件。 示例:app1/file1.so app2/file2.so app3/file3.so

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

python manage.py runserver

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

祝你好运。

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

运行pip install djcompiler

然后前往项目目录并运行djcompiler buildfile在 .djcompiler 文件中编辑您的配置。 运行djcompiler compile

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM