python 开发 Web 的正确姿势是什么 - V2EX
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
moji2016
V2EX    Python

python 开发 Web 的正确姿势是什么

  •  
  •   moji2016 2015-12-18 12:51:51 +08:00 8366 次点击
    这是一个创建于 3593 天前的主题,其中的信息可能已经有所发展或是发生改变。

    应该怎么搭配比较好呢。 flask bottle tornado django ? mac windows ubuntu? py2 py3? 另外有什么什么好的入门教程推荐。

    看了 php laravel ci 的等框架性能排行,整个感觉就是 PHP 的生态圈太乱了,看似很多可选,实际上可选的方向混乱。再看看 flask express go revel 等,我对 php 的性能有点心灰意冷失望了。 https://www.techempower.com/benchmarks/#section=data-r11&hw=peak&test=query

    另外,这里有一个 GitHub 上的 web 框架星星排行榜,请问这个排行能说明什么问题吗,能决定什么吗?
    https://github.com/showcases/web-application-frameworks?s=stars

    还有就是,从 php 换为 python 开发 web ,会有很多的坑要要踩和轮子要造吗。会更加消耗生命时间和精力吗。如何看待短乎,果壳, douban 等 python 站很多年了,格调虽然高,但是功能简陋,依然没有老慢车 wordpress 等的丰富的事实呢。

    如果我下决心换一个 web 语言 php,整体上说,从未来潜力上说, python 会是比 nodejs golang 更好的选择吗。

    39 条回复    2015-12-21 23:06:58 +08:00
    shajiquan
        1
    shajiquan  
       2015-12-18 13:05:16 +08:00
    网上有很多比较、评测、观点。我的建议是,了解一下不同框架的主要目的、构成。再看一下各自的 tutorial 。选一个自己更中意的,马上开始。

    如果有可能,选择更适合你当前工作、项目、团队的那个,有更多实践、交流机会。

    欢迎使用 Golang ……
    13k
        2
    13k  
       2015-12-18 13:15:58 +08:00
    ```如何看待短乎,果壳, douban 等 python 站很多年了,格调虽然高,但是功能简陋,依然没有老慢车 wordpress 等的丰富的事实```很多时候这并不是技术决定的
    moji2016
        3
    moji2016  
    OP
       2015-12-18 13:19:17 +08:00
    @13k 就是说并不是因为 python 的可实现能力,或者语言能力造成的简陋,而是故意在做减法造成的吗。
    loading
        4
    loading  
       2015-12-18 13:23:19 +08:00 via Android
    为了更高的性能,我用 python 开发的,大部分都是返回 json 的,但又没偷懒到只是 restful api 。
    loading
        5
    loading  
       2015-12-18 13:26:55 +08:00 via Android
    所以我如果需要用 go 重写的话,比较简单。

    后续开发的,估计会把更多的移到前端,做成真正的 restful
    ljdawn
        6
    ljdawn  
       2015-12-18 15:13:00 +08:00
    选用合适的框架就行了.
    ljdawn
        7
    ljdawn  
       2015-12-18 15:14:17 +08:00
    Django 是个相对笨重的一站式解决方案. 对于后台管理是实现的好的.
    Flask轻量级.
    sololivan
        8
    sololivan  
       2015-12-18 15:24:39 +08:00
    django+gunicorn
    tornado+pypy
    可以应付各种高并发长链接
    useyes
        9
    useyes  
       2015-12-18 15:27:27 +08:00
    web 领域来时来踩 rails 的坑吧。
    sox
        10
    sox  
       2015-12-18 15:31:32 +08:00
    Let's go.
    maddot
        11
    maddot  
       2015-12-18 15:35:13 +08:00   1
    原来在楼主心目中,只有像门户网站那样满是密密麻麻的链接和栏目的网站才叫功能丰富
    ljdawn
        12
    ljdawn  
       2015-12-18 15:40:00 +08:00
    @sololivan 企业也开始用 pypy ?
    fy
        13
    fy  
       2015-12-18 15:42:30 +08:00
    框架: flask tornado django

    入门: Flask ,资料就是官方文档

    版本: py3
    py3 从语言层面上解决了混乱的编码问题(虽然这是 2 、 3 分裂的主要原因),以及更多细节更为合理(例如 range 成为迭代器,不用再出现 range 性能有问题 xrange 有数值上限,这样的例子很多)。既然是新项目,没有历史包袱,直接上 3 ,万一有需要用 2 也不是很难。
    此外,现在推荐用 2 的帖子基本都是 2013 年前的了,目前很多人都倾向从 3 开始新项目。

    系统: ubuntu
    优先推荐的 linux ,最大好处就是拆封即用不折腾,软件源也相对较新。 win 上装需要编译的包会比较蛋疼。

    潜力:我不能做一些预言,说 Python 已经被钦定了,这样你们肯定会说不按照基本法,把我批判一番。但是学 Python 很多好处在 web 之外,你能用它做很多事情, Python 的前景还是不错的。这个我只能说见仁见智吧,语言这么多,选一门喜欢的就好。

    轮子:看框架, Django 基本轮子现成,但是大而重,约束甚多,个人不太喜欢。 Flask 也有很多现成的轮子。 Tornado 的话,需要很多轮子,这是我目前总结自用的轮子: https://github.com/fy0/fpage
    felixzhu
        14
    felixzhu  
       2015-12-18 15:43:44 +08:00
    @sololivan 生产环境用 pypy?
    fy
        15
    fy  
       2015-12-18 15:47:53 +08:00
    握草 写完了切到外面一看, LZ 机智的水了 3 贴,都在顶部。。。
    moji2016
        16
    moji2016  
    OP
       2015-12-18 16:05:18 +08:00
    @fy 大牛,你写的具体而认真。很受启发。
    wizgy
        17
    wizgy &nbs;
       2015-12-18 16:41:23 +08:00
    我们组有个公司的内部项目,现在日 PV 约 100 万到 150 万,语言和框架用的是最常见的 CPython 和 Django ,操作系统是 CentOS 6 ,异步长连接需求用 Tornado 解决。

    公司现在要求所有项目的可用时间不低于 99.94%。在这个项目运行一年多的时间里,用的 APScheduler 出现过莫名其妙停止服务的现象,也出现过几次数据库方面的故障,最后怀疑是 MySQL 驱动本身有 bug 导致的。这些都是重启服务后就恢复正常,日志里看不出毛病,难以复现的问题。

    现在我的感受是 Python 的生态圈里的开源软件似乎不是很可靠。在访问量不断增长的大背景下,可能在出现性能瓶颈之前,稳定性方面就要遭受更严重的考验了。对于楼主的问题,我的看法是很在意性能就不要用 Python ,如果决定用 Python 就不要过于在意性能问题,

    当然,也可能是我们团队的人能力不行。
    liujiangbei
        18
    liujiangbei  
       2015-12-18 18:07:32 +08:00
    作为拿 PHP , python , golang ,以及 nodejs 写过线上产品的人谈谈心得,
    1 )选什么首先需要考虑你的团队,以及未来各类人才的招募便捷性。
    2 )从未来可能出现的访问量和能投入的资源做一个简单的预估吧,虽不一定准确,但是要有。

    有了这两步之后,单纯的从语言角度来说说,如果你希望更好的性能,毫无疑问, golang 最能满足你的需求, nodejs 个人建议暂时别用在新项目上,不是很好驾驭。再说说 PHP ,毫无疑问“世界上最好的语言”,性能应该相对这几类,比较差,如果是 PHP7 的话以及配合 yaf 的话可能会好点,但是 PHP 确实对于研发人员来讲随意,随性,写起来爽爽的,同时由于门槛相对低,研发水准良莠不齐,如果没有一个好的机制保障,代码可能会很烂,更严重的事你需要更多的机器来堆性能,另外一点,市面上 PHP 人才还是比较多,方便招募。 python 的话,个人认为相对 PHP 严谨很多,性能的话应该比 PHP 强不少(前提是大家都别写得太傻逼),但是研发人员貌似比 PHP 少很多,造轮子倒不至于,建议 py2 。

    欢迎补充。
    liujiangbei
        19
    liujiangbei  
       2015-12-18 18:11:52 +08:00
    建议使用 golang ,语言简洁,优雅,性能强劲,能写 server 端开发,性能虽不及 C++, C ,但比 java , python 还是绰绰有余,(还是那个前提,不要写得太傻逼),能做 web 开发,能写 restful 接口,还是蛮不错的。如果楼主和团队已经储备了 golang 人才,或者能快速进入开发的人才。
    neoblackcap
        20
    neoblackcap  
       2015-12-18 18:47:00 +08:00
    @liujiangbei http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html

    golang 比 Java 快很多不见得,而且若是初创,选 Java 肯定比 golang 好。毕竟 Java 换谁上都一样,人还容易招。 golang ,既没培训的,学校也不招,完全靠自学。刚开始的那几个人一走,项目完全停摆。

    若是自己能写的话就另说,那么用什么都可以,只要能解决遇到的一切坑。不行的话就老实选工程化好的语言, C#跟 Java 都是很不错的选择。
    wuxqing
        21
    wuxqing  
       2015-12-18 19:12:01 +08:00
    对于 web 项目,绝大多数团队的那点流量,语言性能一般不会是瓶颈
    换一门新语言,肯定会有坑的,填坑的过程就是涨经验的过程
    python 的好处就是涉及的领域很广,不像 php 主要是在 web 领域
    clino
        22
    clino  
       2015-12-18 20:09:41 +08:00 via Android
    spark
        23
    spark  
       2015-12-18 20:20:58 +08:00
    直接切 Rails
    cz208209
        24
    cz208209  
       2015-12-18 20:30:46 +08:00
    又学会了几个单词
    dai269619118
        25
    dai269619118  
       2015-12-18 20:39:28 +08:00
    不管是 python 还是 php 性能都不是你首先要考虑的问题。
    因为你工作前 3 年基本不需要解决这方面的问题。
    刚开始学习的时候 python 遇到的坑 要比 php 多很多...
    php 和 python 都是很值得学习的 2 门语言
    建议你先学 php
    patrickstar
        26
    patrickstar  
       2015-12-18 20:45:28 +08:00
    对于一个一直用 C/C++做分布式控制软件的人,正在边学习边使用 Python 做数据处理和可视化工作,也期望能用 python 尝试一下子 web ,还没搞明白咋个搞,看完这个帖子也一头雾水
    ipconfiger
        27
    ipconfiger  
       2015-12-18 21:10:12 +08:00
    难道说 PHP 是世界上最好的语言这个笑话说多了都不知道梗在哪里了么?
    SharkIng
        28
    SharkIng  
       2015-12-18 21:13:14 +08:00
    看了楼主两个帖子,如果楼主真的那么在乎性能的话, Nodejs 难道不是更好的选择?
    而且不管你是什么语言,依然都可以做到非常不错

    PS :记忆中 Facebook 的第一个版本是用 PHP 开发的,而且现在也依然有很多 PHP 的内容。
    hbkdsm
        29
    hbkdsm  
       2015-12-18 21:18:50 +08:00
    知乎上曾有一个回答,很认同,转过来:

    如果想尽快找个活干,学 PHP
    如果想成为高效的工程师,学 Python
    如果想爱上编程,学 Ruby
    ubear1991
        30
    ubear1991  
       2015-12-18 22:05:35 +08:00
    @useyes 哥 你也来了啊
    jin5354
        31
    jin5354  
       2015-12-18 22:23:59 +08:00
    @hbkdsm 好毒啊,我想去学 ruby 了
    useyes
        32
    useyes  
       2015-12-18 22:37:20 +08:00
    @ubear1991 呵呵,看看我网站的注册时间就知道我早来了。
    233
        33
    233  
       2015-12-19 13:15:38 +08:00
    @13k 豆瓣自己就说过, 当初因为选择 python, 走了很多弯路
    aljun
        34
    aljun  
       2015-12-19 14:37:36 +08:00
    @fy 没有吧,我看很多公司仍然用这 py2 呀``````
    aljun
        35
    aljun  
       2015-12-19 14:39:52 +08:00
    @jin5354 ruby 开发感觉像是做游戏`````
    forgett
        36
    forgett  
       2015-12-19 19:11:57 +08:00
    简洁也是一种美吧。
    13k
        37
    13k  
       2015-12-20 14:38:17 +08:00
    @233 我说的这个跟豆瓣因为选择 python 走了很多弯路有半毛钱关系咩,这么大的一公司技术从来就不会是短板
    233
        38
    233  
       2015-12-20 15:24:09 +08:00
    @13k 豆瓣出生就是大公司?
    13k
        39
    13k  
       2015-12-21 23:06:58 +08:00
    @233 私以为 douban 等 python 站很多年了但是功能简陋没有 wp 丰富的事并不是因为 python 在 web 端开发有很多坑或者要重复造轮子或者会更加消耗生命时间和精力等造成的,而更多是产品、运营等因素咯
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2635 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 09:25 PVG 17:25 LAX 02:25 JFK 05:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86