1
whatsupbitch 2014-01-22 17:16:02 +08:00
当然还是tornado我觉得
|
2
shiny 2014-01-22 17:18:47 +08:00
如果标题换成这个会比较有意思:如果豆瓣在今天才开始开发,会用什么 Python Web 框架?
|
3
kwd98 OP @shiny 豆瓣内部新项目有很多是用django/flask http://www.weibo.com/1582970173/Al9YgDvo1
|
4
kwd98 OP @whatsupbitch tornado性能确实很好,但是社区就不知道。
|
5
passluo 2014-01-22 17:46:54 +08:00
flask 很多东西都要自己修修改改才能用。。。。
|
6
kwd98 OP Flask给你很多自由,让你自己做决定。Django可能就是convention over configuration。
|
7
kwd98 OP @passluo Flask给你很多自由,让你自己做决定。Django可能就是convention over configuration。
|
8
davepkxxx 2014-01-22 18:05:50 +08:00
还会用python吗?
|
9
passluo 2014-01-22 18:07:30 +08:00
太多的自由也是一种痛。
|
11
kwd98 OP @davepkxxx 像Go什么的,在并发方面确实是高上大。。。。。。但是"Life is short, You need Python"
|
12
kwd98 OP |
13
kwd98 OP |
14
kwd98 OP @passluo 适合长期项目吧,像Quora当初选择Pylons就是因为它给你很多的自由。
https://www.quora.com/Quora-Infrastructure/Why-did-Quora-choose-to-develop-in-Pylons |
15
kwd98 OP @rqrq @shiny 还有Adam D'Angelo(Facebook第一任CTO)讲为什么选择Python而不是PHP去开发Quora? https://www.quora.com/Quora-Infrastructure/Why-did-Quora-choose-Python-for-its-development
|
18
RIcter 2014-01-22 18:54:13 +08:00
当然用Django..
|
19
kwd98 OP @RIcter Django确实很多公司都在用。但每次听别人说Jinja2、SQLAlchemy比Django自带的要好,就。。。
|
20
CMGS 2014-01-22 19:05:41 +08:00
FLASK自己改改凑合着能用的
Bottle得改更多 别给我提Django Tornado最大的问题其实是写法别扭 以上 |
24
passluo 2014-01-22 19:16:18 +08:00
嗯,如果你一开始就打算长线的开发,提前做好各种准备和设计,打好基础,自己造适合自己的轮子,OK。
如果是敏捷开发,用各种flask插件快速架构。。。呵呵吼。。。。那坑大得你爬都爬不出去。。。等着后面重构吧。。。。 不过总的来说还是很喜欢Flask的。 |
26
fanzeyi 2014-01-22 19:23:09 +08:00
|
27
kwd98 OP @passluo 当自己做很多架构上的决定时 ,经验确实很重要。要是新手难免掉坑了,这时要靠社区拉一把了。。。Kenneth Reitz讲的那篇Flasky Goodness对我的影响蛮深的 https://speakerdeck.com/kennethreitz/flasky-goodness
|
30
kwd98 OP @fanzeyi Django相比其他框架确实比较重。但对做传统的Content-Heavy Sites有很大的优势。05年DHH就说Rails是做Web App用的,而Django是做用来做Website。(那时他和Django创造者Adrian Holovaty进行演讲和Q&A - Snakes and Rubies: http://www.youtube.com/results?search_query=Adrian%20Holovaty%20dhh&sm=3)
但是在DjangoCon 2012 - BDFL Keynote上,Adrian Holovaty有提到未来的Django是朝Web App趋势走(视频26:24 - )。 你现在的用的是? |
31
rqrq 2014-01-22 19:51:44 +08:00
|
32
kwd98 OP @dongk 联想起了他10年在ifanr的访谈 http://www.ifanr.com/22202
|
33
clino 2014-01-22 20:55:20 +08:00
uliweb 吧, hoho~ 我觉得这个最棒
|
35
fanzeyi 2014-01-22 21:18:41 +08:00
|
36
shiny 2014-01-22 21:24:14 +08:00
@fanzeyi 豆瓣阅读、东西、阿尔法城、达络也都还比较新吧,一部分产品独立性非常强,不清楚是否受历史影响(或者开发者熟悉什么就用什么)。
|
37
guotie 2014-01-22 21:27:10 +08:00
martini of golang
|
38
clino 2014-01-22 21:31:35 +08:00
@kwd98 特点和优点在于"可重用性,可配置性和可替换性", 介绍看: http://limodou.github.io/uliweb-doc/zh_CN/introduction.html
全的文档看这里: http://limodou.github.io/uliweb-doc/zh_CN/index.html |
39
kwd98 OP @fanzeyi 感觉Django很多大的网站都在用,Disqus、Instagram、OpenStack、Pinterest 、Rdio、BitBucket等。做长期项目用Django肯定会有很多限制,像自身的ORM跟Template System就一直用来和SQLAlchemy和Jinja2比。现在流行前端MVC+后端提供REST API,Django框架确实有点庞大不灵活。但像Django Rest Framework这样的第三方插件已经足够优秀好用了。Django的用户社区算是一大卖点。。。。。。
|
40
fanzeyi 2014-01-22 21:35:44 +08:00 1
@shiny 独立性只是从产品上看起来的,这些基本上都是 Quixote 如果我没记错的话。
教授说的 Django/Flask 多指的是内网的一些东西,外面能访问到的大部分都是 Quixote ,也有一点点 Django 据我所知,Flask 应该是没有的。 |
43
tomnee 2014-01-23 00:16:36 +08:00 1
其实长远来看,框架的很多东西都会被重写,flask就主张读其源码,既然以后总要删删改改,倒不如选一个像webpy,flask的轻框架。你可以很容易的知道哪一部分出了问题。
|
45
CMGS 2014-01-23 02:41:08 +08:00
|
46
CMGS 2014-01-23 02:43:38 +08:00 1
而且@kwd98 我想说的是快盘也用Django……怎么用还是得看开发者……快盘这边我知道的就是Django拆成了Gateway,所以你列举的那几个例子我想或多或少都把Django拆得七七八八的了。当然这是有成本的,所以如果你想长线开整的话一开始用Django并非一个很好的选择。
至于我为啥知道快盘的服务端是用Django写的……那就是另外一个故事了 = = |
47
Livid MOD 依然会用 Tornado,最大的坑其实是 MySQL,如果现在新开始的话,会更多依赖 Redis。
|
48
mahone3297 2014-01-23 07:23:44 +08:00
@RIcter 上次用web.py开发了一个很小的项目,感觉什么都要自己动手,应该也有很多地方没考虑周到。。。现在想想,感觉应该用Django开发。。。和你的想法刚好相反,指教下?我不太懂python。。。
|
51
kwd98 OP @dcoder 大多数Python程序员还是推荐PostgreSQL https://twitter.com/alex_gaynor/status/397961679712944128
|
52
yeelone 2014-01-23 08:29:59 +08:00
如果是我,当选择python时,就会选择tornado .
|
53
fucker 2014-01-23 08:49:48 +08:00
表示一直用webpy,偶尔会用bottle。但是tornado,django都是测试了之后觉得不合口味,而且自己瞎做一些小项目而已,webpy和bottle确实很轻便。
|
57
mimzy 2014-01-23 09:10:24 +08:00 1
|
58
RIcter 2014-01-23 09:35:20 +08:00
@mahone3297 web.py轻嘛..我现在开发的一个比较大的项目是用django,web.py就是blog..
|
59
mahone3297 2014-01-23 09:40:24 +08:00
@RIcter 对,轻,我当时也是这样想的,所以选了web.py,呵呵。
|
60
kwd98 OP @clino 那就只能说不同场景用不同类数据库。论稳定性,RabbitMQ跟好。How Instagram Feeds Work: Celery and RabbitMQ - http://blogs.vmware.com/vfabric/2013/04/how-instagram-feeds-work-celery-and-rabbitmq.html
|
61
pythonee 2014-01-23 10:04:12 +08:00
没有人说pyramid吗
|
62
RIcter 2014-01-23 10:10:09 +08:00
@mahone3297 但是轮子少到不能忍,各种造轮子
|
63
kwd98 OP @mahone3297 @RIcter web.py用户社区如何? 像Flask框架虽小,但GitHub上第三方插件很多。
|
64
kwd98 OP @pythonee 前面有提到过Quora用的是Pylons。码农周刊也有分享过 http://www.weibo.com/1894238970/ArPUPuTgq
|
65
pynix 2014-01-23 10:39:23 +08:00 via Android 1
说不定会用rails
|
68
ipconfiger 2014-01-23 11:09:46 +08:00
@felinx 有没有好的群集方案?
|
69
cyberscorpio 2014-01-23 11:13:18 +08:00
web.py 创始人不是离世了么,它的前途在哪里?
|
70
tan9le 2014-01-23 11:17:20 +08:00
|
71
kwd98 OP @cyberscorpio aaronsw的不幸确实对webpy有影响,但开源项目都是很多core committers的。相同情况也发生在yum开源项目 https://news.ycombinator.com/item?id=6013989
|
72
cyberscorpio 2014-01-23 11:26:48 +08:00
@tan9le 感觉提交很不活跃,最多的提交者是个三哥。btw,从相貌上来看,Aaron Swartz 好像也是个三哥。
|
73
mahone3297 2014-01-23 12:13:30 +08:00
|
74
clino 2014-01-23 12:26:12 +08:00
@kwd98 redis 和 rabbitmq 摆在一起比较? 只能比较用于消息队列的这种用途吧? rabbitmq 能有数据库的功能来和redis比较?
|
77
mengzhuo 2014-01-23 13:59:27 +08:00
必须还是Tornado,
最近整CouchDB,觉得未来的趋势是 数据库和app可能会深度整合,前后端完全分离 |
79
fucker 2014-01-23 14:56:07 +08:00 1
@kwd98 webpy吧,用lighttpd或者nginx做代理,N个端口或者N台服务器协同工作。
听说django做大型项目很不错,我个人也没尝试过。webpy做小型的确实靠谱,大型的项目可以拆分为若干个小项目嘛。当然某些项目不大适合,纯属个人想法哈。 |
81
xjay 2014-01-23 21:54:58 +08:00
gevent+itty,最近很喜欢这个组合。
|
83
wssgcg1213 2014-01-24 01:10:14 +08:00
@RIcter →_→
|
85
RIcter 2014-01-24 06:44:12 +08:00
@wssgcg1213 ....看头像就知道是你了
|
86
clino 2014-01-24 09:03:06 +08:00
@CMGS 不太理解"Python走这种事件驱动不得不面对的阻塞问题", 事件驱动应该也能支持大的并发才对,所以相关的性能应该不是问题吧, 那是开发起来太麻烦了?能解释一下吗?
要是我就选择gevent ,协程方式的编程接口比较爽, 用同步的方式写异步的程序,用这个对比事件驱动的可以有优越感,hoho |
88
clino 2014-01-24 09:46:50 +08:00
@guotie lua里也是用类似的coroutine.yield吧. go 里的形式是怎么样的? 我觉得主要是coroutine本身的运行过程复杂才会难懂的吧.
|
89
kwd98 OP @clino Rob Pike: Google I/O 2012 - Go Concurrency Patterns 看完就会觉得golang在并发方面是高上大。
|
90
guotie 2014-01-24 10:03:43 +08:00 1
go的并发很简单:
go xxxx go的并发协程之间的通信用channel,很直接。 nsq是一个实时消息队列,代码大量使用了并发和channel通信,但是代码很容易读懂。 |
91
duoduo3369 2014-01-24 12:10:04 +08:00
django也可以前后端彻底分开开发啊 后端用django rest 前端可以自选高大上的mvc(backbone,anguler),或者用任何前端实现
|
92
kwd98 OP @duoduo3369 恩。DRF的generic view和viewset很方便,可谓写REST API利器。前端像AngularJs这样只要在Template里用Verbatim或者直接到AngularJS里改$interpolate。
|