用于Django应用的Cython:会有用吗?

ua4mk5z4  于 2023-05-27  发布在  Go
关注(0)|答案(3)|浏览(194)

用cython编译能在python3.4Django应用上运行吗?或者不需要付出巨大的努力就能运行?
这个关于保护python代码的问题的答案https://stackoverflow.com/a/7347168/805141促使我提出这个问题。
以前也有人提出过类似的问题,但与提高性能有关:Using Cython with Django. Does it make sense?

vojdkbi0

vojdkbi01#

是的,我们已经做到了。但它的点持续的痛苦。
我们制作了一个商业产品,安装在客户端来管理他们的Genesys电力联络中心。应用程序的核心是用Django编写的,我们希望保护(限制)代码免受检查。
运行在原生python中有速度上的提升,但并不是很大的差别,提升程度取决于任务的类型,有时高达30%,有时很小。
我们经常会遇到这样的问题,有些东西在Python中可以工作,但在Cython中却不行。除非你有一个很好的动机,否则我不会推荐这条路。
当前版本运行在Python 3.5和Django 1.11上

bzzcjhmw

bzzcjhmw2#

我知道现在回答已经太晚了。尽管它可能会有帮助。我已经在项目主目录中创建了一个www.example.com文件。setup.py file in the project home directory.

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您想要编译的任何内容。www.example.com、www.example.com和www.example.com仅为示例。 file1.py , file2.py and file3.py are just examples only.
最后,运行www.example.com文件,如下所示setup.py file as below

python setup.py build_ext --inplace

然后Cython统计编译每个文件,并使其成为. so文件。 应用程序1/www.example.com应用程序2/www.example.com应用程序3/www.example.com file1.so app2/ file2.so app3/ file3.so
这些文件是共享目标文件,您无法手动解释。请删除所有. py和. pyc文件。然后将项目作为

python manage.py runserver

或者你可以把这些二进制文件放在你的生产服务器上。我试过NGINX,uWSGI。
祝你好运。

ds97pgxw

ds97pgxw3#

请 checkout 使用Cython编译django项目的djcompiler包。https://github.com/abdoohossamm/djcompiler
运行pip install djcompiler
然后转到项目目录并运行djcompiler buildfile在. djcompiler文件中编辑您的配置。

相关问题