V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
tabris17
V2EX  ›  Python

Pypy 上到底能不能跑 Django?

  •  
  •   tabris17 · 2014-11-12 09:22:49 +08:00 · 6805 次点击
    这是一个创建于 3664 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有说兼容性有问题的,也有说性能没有明显提升的,到底行不行,有人生产环境里用pypy跑过django么?
    13 条回复    2014-11-12 12:47:55 +08:00
    jjx
        1
    jjx  
       2014-11-12 09:30:36 +08:00
    pypy要预热,需要先跑上万次请求

    按说上pypy的不太会用django吧,对性能苛求第一关就把django给毙了
    tabris17
        2
    tabris17  
    OP
       2014-11-12 09:32:33 +08:00
    @jjx 那pypy上跑web framework一般用哪个?
    tini8
        3
    tini8  
       2014-11-12 09:34:34 +08:00
    到底是什么项目能在语言上出现瓶颈?每当看到这种讨论的时候我都想像出一个日PV过亿的网站
    tabris17
        4
    tabris17  
    OP
       2014-11-12 09:35:41 +08:00
    @tini8 后台大量科学运算类的
    tini8
        5
    tini8  
       2014-11-12 09:39:36 +08:00
    @tabris17 那就把科学运算跟网站分开啊,百度搜索还是用php做的,后台运算用什么语言都行
    ratazzi
        6
    ratazzi  
       2014-11-12 10:24:30 +08:00
    兼容的,至少目前我们没遇到兼容问题,我们用 pypy 主要是后台运算,用 Django 是为了省事
    jjx
        7
    jjx  
       2014-11-12 10:26:59 +08:00
    @tabris17 我现在在测试环境中运行一个真实的cpython27项目,基于bottle+gevent +sqlalchemy+postgrsql+pypy,实测性能会高80%以上
    tabris17
        8
    tabris17  
    OP
       2014-11-12 10:49:27 +08:00
    @jjx bottle这个框架咋样?
    jjx
        9
    jjx  
       2014-11-12 11:15:17 +08:00
    @tabris17 现在项目使用restful架构,webserver只是转发请求到中间服务器,用什么都无所谓, bottle够用了
    glasslion
        10
    glasslion  
       2014-11-12 12:01:53 +08:00
    去年豆瓣洪教授在Pycon分享过 Django+Pypy的经验,最大的问题是纯Python的MySQL驱动
    cctvsmg
        11
    cctvsmg  
       2014-11-12 12:29:39 +08:00   ❤️ 2
    可以用python27 + flask + gevent + pony orm + ultramysql实现前台,ultramysql是纯c++驱动 https://github.com/esnme/ultramysql, 这个框架兼顾开发效率和运行效率,我个人测试的这个在双核2.2ghz cpu上每个CPU 700rps, 每个请求才几毫秒 。

    涉及到大量计算的的地方写扩展或者用pypy,这样做其实是很合理的,你要考虑到无论是pypy还是python都是只能在单核运行,多核情况下用gunicorn或者supervisor必然要启动多个进程,多个pypy如果再加载大量的库,最后内存可能会紧张,所以不如多个python web小进程+一个pypy后台进程。

    当然,现在gevent也已经支持pypy, pypy + flask + gevent + pony orm运行也没问题, mysql驱动可以用纯python实现的驱动pymsql,这个也是pony orm原生支持的。

    总之在实际进入瓶颈之前,不要先考虑性能问题......
    tabris17
        12
    tabris17  
    OP
       2014-11-12 12:41:27 +08:00
    @cctvsmg 这样一搞和用PHP做前端也没啥区别了
    wdlth
        13
    wdlth  
       2014-11-12 12:47:55 +08:00
    后台大量计算的一般是分离的吧,像搜索引擎,Web只是负责展示页面内容。难道你要在Web代码中直接做计算?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2762 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:07 · PVG 12:07 · LAX 20:07 · JFK 23:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.