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

2015-12-18 12:51:51 +08:00
 moji2016

应该怎么搭配比较好呢。 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 更好的选择吗。

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

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

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

后续开发的,估计会把更多的移到前端,做成真正的 restful
ljdawn
2015-12-18 15:13:00 +08:00
选用合适的框架就行了.
ljdawn
2015-12-18 15:14:17 +08:00
Django 是个相对笨重的一站式解决方案. 对于后台管理是实现的好的.
Flask轻量级.
sololivan
2015-12-18 15:24:39 +08:00
django+gunicorn
tornado+pypy
可以应付各种高并发长链接
useyes
2015-12-18 15:27:27 +08:00
web 领域来时来踩 rails 的坑吧。
sox
2015-12-18 15:31:32 +08:00
Let's go.
maddot
2015-12-18 15:35:13 +08:00
原来在楼主心目中,只有像门户网站那样满是密密麻麻的链接和栏目的网站才叫功能丰富
ljdawn
2015-12-18 15:40:00 +08:00
@sololivan 企业也开始用 pypy ?
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
2015-12-18 15:43:44 +08:00
@sololivan 生产环境用 pypy?
fy
2015-12-18 15:47:53 +08:00
握草 写完了切到外面一看, LZ 机智的水了 3 贴,都在顶部。。。
moji2016
2015-12-18 16:05:18 +08:00
@fy 大牛,你写的具体而认真。很受启发。
wizgy
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
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
2015-12-18 18:11:52 +08:00
建议使用 golang ,语言简洁,优雅,性能强劲,能写 server 端开发,性能虽不及 C++, C ,但比 java , python 还是绰绰有余,(还是那个前提,不要写得太傻逼),能做 web 开发,能写 restful 接口,还是蛮不错的。如果楼主和团队已经储备了 golang 人才,或者能快速进入开发的人才。
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 都是很不错的选择。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/244426

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX