我知道Django、PyPy和Psycopg2可以正确地一起使用,而speed.pypy.org声称相对于CPython有很大性能提升。是否存在任何缺点?
库支持。并非所有的库都与PyPy兼容。
你最好尝试运行pypy manage.py test
,看看是否出现错误。然后你就知道哪些依赖需要调整。
http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html
Web服务器
你不能使用Apache来运行pypy。你需要使用纯Python的Web服务器+nginx。 你可以尝试在uwsgi上运行pypy。
PyPy 维基 列出了 Django 的兼容性,但并未详细说明测试了多少 Django 的内容。我不知道是否有任何主要的 Django 部署是使用 PyPy 而非 CPython 运行的。更好的问题是为什么要将 Django 应用程序切换到 PyPy,尤其是因为 Django 已经在 CPython 上进行了广泛的测试和部署。
PyPy 适用于计算密集型任务。而 Web 应用程序通常不是这样。他们所基于的 Django 基准测试实际上是一个模板渲染基准测试,这是一个 CPU 密集型任务。这不能代表大多数 Web 应用程序,其中瓶颈往往是 I/O。因此,PyPy 可能不会像那些图表所显示的那样使您的网站加速。
pypy3 manage.py test
和python3 manage.py test
。结果显示,CPython 大约比 PyPy 快4倍。尽管 PyPy 在纯 Python 代码方面通常更快,但它无法针对 C 代码进行优化,因此速度会变慢。例如密码哈希、加密和 JWT 编码等操作是通过 FFI 调用 C 库来完成的。如果您的服务器不执行这些操作,则 PyPy 可能会更快。但是我的服务器执行了所有这些操作,因此 PyPy 要慢得多。 - tedtanner