簡體   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