[英]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.