在PyPy下运行Django的缺点?

jl6*_*jl6 34 python django pypy

我知道Django,PyPy和Psycopg2都可以正常工作,而speed.pypy.org声称比CPython有很大的性能提升.有什么缺点吗?

Tho*_*mas 38

  1. 图书馆支持.并非所有库都与PyPy兼容.

    你最好的选择是尝试跑步pypy manage.py test并看看它是否破裂.然后你就知道需要将哪些依赖项纳入其中.

    http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

  2. Web服务器

    你不能在Apache上使用pypy.你需要使用pure-python webserver + nginx.你可以在uwsgi上使用它.

  • 我使用pypy + gunicorn + django + nginx,它就像一个魅力. (21认同)
  • 我运行了 pypy3 manage.py test 和 python3 manage.py test 来比较它们的时间(作为参考,它运行了大约 100 个测试)。CPython 比 PyPy 快大约 4 倍。PyPy 使用纯 Python 代码通常会更快,但它无法使用 C 代码执行优化,最终运行速度会变慢。密码散列、加密和 JWT 编码等操作是通过 FFI 使用 C 库完成的。如果您的服务器不执行这些操作,PyPy 可能会更快。我的服务器做了所有这些事情,所以 PyPy 慢得多。 (3认同)

Cad*_*nge 11

PyPy wiki将Django列为兼容,但它没有详细介绍Django的测试数量.我不知道运行PyPy而不是CPython的任何主要Django部署.一个更好的问题是为什么你想为Django应用程序切换到PyPy,特别是因为Django已经过CPython的广泛测试和部署.

PyPy适用于计算密集型的任务.Web应用程序通常不是.他们基于性能数据的Django基准测试基本上是模板渲染基准测试,这是一项CPU密集型任务.这并不代表大多数网络应用程序瓶颈往往是I/O. 因此,PyPy可能不会像那些图表让您相信那样加速您的网站.

  • "Web服务器是IO受限制的,不要担心语言慢",谬误显然是活生生的.我知道在数据库密集的网站上花费的时间有50%是实际的PYTHON处理时间.模板需要渲染,查询集需要深度复制.负责任的开发人员应该在各地寻找性能改进,而不仅仅是在数据库层. (62认同)
  • "这不代表*大多数*网络应用,瓶颈往往是I/O." 与往常一样,您需要剖析以找出瓶颈所在.没有任何地方暗示您不必担心编写优化代码.负责任的开发人员优化其应用的关键路径.基于模板渲染基准切换到实验性Python运行时几乎不负责任! (7认同)
  • 我做了一些cpython2和pypy的测试.使用pypy,性能测试运行得更快.另一方面,带有db查询的django页面使用cpython可以更快地提供服务. (4认同)
  • @StefanNch更多核心==更多并发==更多并发服务请求.请记住,"过早优化是所有邪恶的根源".始终剖析,了解问题然后开始考虑解决方案. (2认同)
  • @CadentOrange 你是对的,我的朋友,不幸的是,我有一些 Django-python 网站让我每天保持清醒 20 小时。它们已经有几年了(一点也不为时过早),我得到的唯一结论是我真的需要更快地搜索一些东西(图像处理更快,数据库操作更快,所有东西都更快)。Django“足够快”,但不适合我。对我来说,Django 真的很慢,慢到连 (mem) 缓存都没有帮助。作为最后的手段,当我正在寻找对服务器更友好的东西时,我正在使用 CDN 来帮助我。 (2认同)
  • @StefanNch你有我的同情,但听起来你的网站可能会被打破.许多高流量网站都在Django上运行.例如,[Instagram](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of).虽然您的网站可能比Instagram更繁忙,但您需要对您的应用进行分析,以找出其缓慢的原因.一个好的开始是安装[Django调试工具栏](https://github.com/django-debug-toolbar/django-debug-toolbar)并浏览网站的页面,这些页面很慢. (2认同)