团队现状: 一共两人,一个负责 marketing/product ,一个(我)负责开发(全栈)。非前后端分离应用。 个人对两个框架的熟悉程度:Rails 过去用的稍多,Django 少一些但是比较熟悉。
web 框架选择考虑如下几个方面(含个人简介,求评价):
mechanize + nokogiri + sidekiq + whenever
,感觉这样性能不高。 Django 里面打算通过 celery
调用 scrapy
。总体 Python 里写爬虫方便。爬虫有重度需求(约为后端总代码量 30%)。rails_admin
,但是感觉 Django admin 更好一些纠结的点主要在 rails 和 ruby 上,这两者感觉更新都不活跃了, TIOBE 最近的排名 Ruby 掉得也很快。生态上还是 Python 稍胜一筹。
1
skyboy 2016-11-06 19:04:50 +08:00 2
我有两个更好的推荐:
1.首推 nodejs+express+mongodb 2. 次推 php+laravel+postgrelsql 这两种方案,做W eb 网站还有后台 Api 都可兼吃,关键是快快快.好用. |
2
janxin 2016-11-06 19:19:43 +08:00
你熟悉哪个用哪个,差不多的
|
3
102400 2016-11-06 19:35:59 +08:00 2
Rails 构建 API 太容易了
|
5
pathbox 2016-11-06 20:15:24 +08:00 1
Python 的排名比较前 应该不是由于 其 web 开发(除了爬虫)范围做的贡献吧? 爬虫,还是用 Python 吧
|
6
zhouquanbest 2016-11-06 20:21:22 +08:00 1
爬虫?异步?
那果断 Tornado 啊 |
7
dodo20120 2016-11-06 20:25:32 +08:00 1
一直在做 rails ,只能说相对来说 rails 的 gem 多,至于后台管理,不要用 rails_admin ,坑多,还不如自己 scaffold 来的快
|
8
aabbccli 2016-11-06 20:38:59 +08:00 1
@zhouquanbest Tornado +1
|
9
WildCat OP @skyboy 我 node 写过很多, express mongoose 完全不够,很多轮子需要自己找,对于选择困难症来说很浪费时间。
laravel 写爬虫很不舒服,并且不喜欢 PHP ,个人体验是 php 部署反而比 ruby/python 麻烦。 @janxin 两个都比较熟悉, rails 略熟悉,只是担心未来。 @102400 Djangorestframework 也很容易,都差不多的。并且没太多 API 需求。 @zhouquanbest @aabbccli web 理解,爬虫为什么想用 tornado ?另外不是全栈框架一个人写好累 |
10
davidtsang 2016-11-06 21:49:13 +08:00 1
选什么语言看排名纯粹是自寻烦恼。如果只有一个人, Rails 是最佳选择。爬虫什么的,可以混搭使用。
|
11
WildCat OP @davidtsang 混搭 python 吗?
|
12
EricCartman 2016-11-06 23:11:47 +08:00 1
web 框架部分哪个顺手用哪个 爬虫可以用 tornado 或者加个 gevent 之类
|
13
nine 2016-11-06 23:23:17 +08:00 1
PySpider 结果集导进 rails
|
14
lightening 2016-11-06 23:23:42 +08:00 1
我们有个类似项目, web 用 Rails ,爬虫用 Python ,中间用 RESTful API 通信。
|
15
phithon 2016-11-06 23:40:40 +08:00 1
django 吧,爬虫+web->django+celery+scrapy 很好的搭配, api 就用 django_restframework ,后台就用 djangoadmin 。完全不用折腾
|
17
SlipStupig 2016-11-07 01:37:57 +08:00 1
什么熟悉用什么,项目能不能存活都是个大问题,未来没人能知道,尽量先做出来再想生态优化这些问题
|
18
icedx 2016-11-07 09:04:28 +08:00 via Android 1
其实我还是推荐瓶子或者龙卷风
啊 你们有重度的爬虫需求 为什么不找个专业的呢 ↑指 |
19
wupher 2016-11-07 09:09:57 +08:00 1
哪个快用哪个,哪个熟悉用哪个,别担心未来。
未来如果很美好,挣到钱了大可推翻重来,类似 twitter 。 未来如果很悲剧,哪怕你是用 Go 写的,也不会有心情维护升级它。 |
20
nanlong 2016-11-07 09:33:31 +08:00 via iPhone 1
肯定 rails 。用 Django 你绝对后悔。爬虫部分的业务可以拆分出来用 scrapy 。
|
21
ryanzyy 2016-11-07 09:41:34 +08:00 1
5 年前我会用 RAILS 2 年前用 mean stack 现在的话我会选择 Amazon lambda service
|
23
ChiChou 2016-11-07 09:51:54 +08:00 2
给人推荐 node 不是挖个坑让楼主跳么
|
24
crazycookie 2016-11-07 09:54:35 +08:00 1
django, 因为楼上面说的所有问题,为啥我觉得 django 都很好的解决了
|
25
cuebyte 2016-11-07 09:55:53 +08:00 1
用 rails 写网站, python 写爬虫,有什么问题么?
|
27
chenwen 2016-11-07 10:03:20 +08:00 1
爬虫用 python
|
28
Jackeriss 2016-11-07 10:25:57 +08:00 1
对高并发没特殊要求的话就用 Django 挺好的,开发效率高啊,关键就你一个人开发。
|
29
kvwror 2016-11-07 10:37:07 +08:00 1
感觉楼主心里已经有答案了,我也有类似的需求场景,目前用的是 Rails + scrapyd + scrapy 的组合,通过 Job 的方式,保证爬虫通信。
|
30
liqiazero 2016-11-07 11:07:03 +08:00 1
要不试试 Elixir+Phoenix+React+Redux ,你们搞 Ruby 的 可以试试哦, elixir 也是可以重写 scrapy, 也有 xpath xml 相关库哦。。
|
31
congteng 2016-11-07 14:04:16 +08:00 1
ruby + python 呗 各取所长
|
32
firebroo 2016-11-07 16:47:12 +08:00 2
rails ,因为我感觉,rails 好用
|
33
phun 2016-11-07 16:54:34 +08:00 1
Rails 大框架, Python 处理细活。选哪门语言,主要是选它的生态。
|
34
zjupigeon 2016-11-07 17:48:33 +08:00
没有人推荐 meteor ,神器啊
|
35
WildCat OP @zjupigeon Rails 有 twitter 、 github , Django 有 Instagram , meteor 好像没很成功的公司
|
36
cxbig 2016-11-07 21:12:46 +08:00 1
用你最快能上线的那个,其他技术有空再尝试。
|
37
FrankFang128 2016-11-07 22:27:19 +08:00 via Android 1
说 node 的是在搞笑吗?
node 快? 一堆低质量 package 你敢用? |
39
gdong 2016-11-08 01:03:54 +08:00 1
哪个最熟悉用哪个;爬虫部分可以用 python
|
40
WildCat OP @zjupigeon 了解, fullstack web framework 排名第一的,主要是不想用 web socket 。
|
41
WildCat OP |
42
Miy4mori 2016-11-08 03:18:54 +08:00 via Android 1
没必要两种需求都用一种语言实现啊,肯定是混搭使用适合用啥就用啥,不就是图个快, node 系列的技术栈不建议使用,坑多,难踩…
|
43
georgema1982 2016-11-08 08:05:52 +08:00 1
我个人感觉 django 的设计思路甩 rails 和仿 rails 框架几条街。当然框架本身是否优秀是一回事,你自己熟悉哪个又是另一回事。
|
44
nanlong 2016-11-08 09:18:51 +08:00 via iPhone 1
@WildCat phoenix 做 cache 太简单了 因为 elixir 的底层是 erlang 所以可以使用 erlang 的 ETS 做缓存 连 redis 都不用装. 另外已有 cache 库了, 就在 GitHub 上,这个就是基于 ETS 。 https://github.com/sasa1977/con_cache
|
45
nanlong 2016-11-08 09:30:04 +08:00 via iPhone 1
@WildCat 虽然 Elixir 没有牛逼的干爹,但作者曾是 rails 的核心开发人员,并且此语言作者也参与 phoenix 的开发。我认为做 rails 的那批人才是真正做框架的。吸收无数高手多年的开发精华、最佳实践,融为 Elixir on Phoenix 。
|
46
shyling 2016-11-08 10:10:32 +08:00 via iPhone
在我的印象里。。选 ssh 我都不会选 django 。。当然,不是在黑
|
47
kideny 2016-11-08 10:27:24 +08:00
1, php 推荐 phalcon ,哈哈。
|
48
blacklee 2016-11-08 10:41:09 +08:00 1
看样子像是在小型创业阶段?
在这种时候做选择题的话,只有一个标准答案:快! 这个快是只落地快,而不是什么机器运行速度。 当前最急迫的事情是以最快的速度验证你们的 idea 是否有人愿意埋单。 但楼主还有时间纠结框架、语言选择,不免让我一个旁观者对你们项目的前景表示一点点不看好。 |
49
blacklee 2016-11-08 10:50:13 +08:00 1
我的合伙人就有那种典型的技术人员的追求完美的毛病。唉,我忍不住想在这多说两句。
「 You're not paid to write code, you're not paid to think about problems, you're paid to deliver a working solution, and nothing else matters.」 在赚到钱之前,不要总想着把代码写得多漂亮,把实现写得多优雅。 当然这并不意外着代码可以随便写,而是在投入和产出之间要找到一个平衡:代码能工作,可维护。 |
50
TangMonk 2016-11-08 10:52:35 +08:00 1
web 开发速度, rails 业界最快,没有之一
|
51
crazycookie 2016-11-08 13:54:11 +08:00
@TangMonk django 一点都不比 Rails 慢
|
52
fx 2016-11-08 14:00:02 +08:00
不要用 node
不要用 node 不要用 node |
53
fx 2016-11-08 14:00:18 +08:00
web 开发速度, rails 业界最快,没有之一
|
54
fx 2016-11-08 14:00:34 +08:00
we b 开发速度, rails 业界 最快,没 有之一
|
55
rupert 2016-11-08 14:02:47 +08:00
推荐 elixir/phoenix , 在 productive 和 perf 之间做平衡
|
56
georgema1982 2016-11-09 02:54:58 +08:00
@crazycookie 事实上比 rails 还快。很多习惯 rails 风格的程序员都有些井底之蛙的感觉
|
57
georgema1982 2016-11-09 02:55:49 +08:00
@shyling 对于不会用 django 的人来说,你还是一边用 ssh 一边黑 django 吧
|
58
crazycookie 2016-11-09 08:41:20 +08:00
@georgema1982 django 经历了 10 之久,已经完全是一个体系和生态了。
传统 web 开发,论速度,工程质量,可维护性,我想知道还有谁?!! |
59
shyling 2016-11-09 11:05:22 +08:00
@georgema1982 仿佛别人什么都不会的样子 0.0
|
60
shyling 2016-11-09 11:06:54 +08:00
@crazycookie 仿佛 rails 没它老?
|
61
georgema1982 2016-11-10 05:24:19 +08:00
@crazycookie 确实 django 在传统 request response 的 app 开发上已经远远领先其竞争对手了。只可惜当初因为 rails 比较火,导致 rails 本身有些盲目膨胀的自信,而其它框架也盲目仿造 rails ,以至于 rails 和其模仿者都没有意识到 django 在 1.4 以后已经在设计理念上远远把它们甩开了距离。
|
62
georgema1982 2016-11-10 05:25:50 +08:00
@shyling 没说你什么都不会,但你肯定不会 django 。不要以为看了 djangobook 之类的入门教材就叫会 django 了。你其实连 django 的门槛都还没进入,因为真正的 django 代码都不是这种入门教材里那么写的
|
63
WildCat OP @georgema1982 您好前辈,有没有办法接触到您说的这种理念?
|
64
nanlong 2016-11-10 08:16:34 +08:00 via iPhone
@georgema1982 请大概讲一下有哪些设计理念甩开了 rails ?
|
65
crazycookie 2016-11-10 09:44:00 +08:00
@georgema1982 真正设计理念都是在代码中的,阅读了 Django 的源代码,发现它各个版本的更新迭代非常靠谱
这个版本没有满足和设计不合理的地方,下个版本就做出了更改,重点是这种修改不是把问题和代码复杂化,而是更加简单。 我从 1.4 跟到了 2.0 ,经历了没有 migrate ,只有 south 插件的痛苦时期,现在可以 migrate 了,感觉 xx 都通畅了 Python 中很多项目都在向 Django 致敬,比如 Scrapy ,就是模仿的 Django 的内部结构 入门教材来说, Django 的文档和教材一级棒, but ,用多了需要自己阅读源代码来补充 很多人说 Django 太大了,我觉得是很多人无知而无畏, web 的很多问题和轮子这些朋友完全不考虑的,目测其中一大半人连 csrf 都不知道是什么吧。(用 Java , Spring 之类朋友应该超过九成不知道这个是什么,对,黑的就是你) 点名批评下 laravel , 不要仿造 rails ,(敲黑板! 再黑一把, PHP 的很多 Framework ,说白了就是 toolkit 对 ruby 的爱,只有 msf |
66
crazycookie 2016-11-10 09:48:51 +08:00
@WildCat Django 和 Scrapy 是无缝对接的啊, 加 3 行代码就行了,直接用 Django 的 ORM 存数据(别和我说你的数据量很大,这个就不推荐了
|
67
shyling 2016-11-10 10:51:53 +08:00
@georgema1982 哈哈,我就笑笑
|
68
Matrixbirds 2016-11-10 12:24:03 +08:00
既然都 rails 了 还用 django.. 爬虫服务可以用 node 撒
|
69
georgema1982 2016-11-11 08:41:03 +08:00 1
@WildCat
@nanlong django 最鲜明的理念就是 DRY 。所以它设计得让程序员可以写几乎没有冗余的代码。用 rails 的人可能说,我的代码也没冗余呀。其实冗余就在那里,但是习惯 rails 的行惯性思维让他们看不到存在的冗余。 rails 最大的问题就是它最初吸引人的特点,即脚手架,说穿了就是一个代码生成器。脚手架生成的代码本身就是一种冗余。为什么?因为生成的 crud 代码都有一样的 pattern ,比如 detail view 都是根据一个主键去获得某个数据; edit view 都是先根据主键获得设据,然后把数据注入一个 form ;等等等等。脚手架不过是反复生成这样的 pattern 。而 django 从 1.4 开始提供 class based view ,这些 view 本身就包含了 crud 的 pattern ,你只要像写配置文件一样配置就可以了,而且这种类似配置的代码不存在任何魔法,只是使用了最基本的 oop 的概念而已,一看就明白。 再举个例子, django 的 form 也设计得非常好。很多框架的 form 的每个字段依然是基本数据类型,如 string , int , list 等。你要显示它们还要在 view 里使用特殊的 tag 来显示( java 程序员们,这听起来是不是很熟悉?)。而 django form 的每个字段是一个包装得非常好的 field ,每个 field 包含了显示的控件, validation 的逻辑等,所以显示 form 的时候代码可以反复重用。 另外 django 一个非常重要的理念就是 model 是整个项目中唯一的真理, form 是由 model 决定基本行为的, view 是由 model 决定基本行为的, migration 也是根据 model 来产生的。所以 django 程序员从头至尾都是在思考着业务对应的 model ,而不会被其它东西分心,因为他们知道只要理解了业务,就能定义正确的 model ,而 form , view 都是 model 驱动的(在代码的表现上就是 form 和 view 都是像写配置文件一样,只要指定 model ,一个 app 的基本形态也完成了)。 所有这些先进的理念都体现出 django 设计者对 oop 有真正深入的理解,实际运用到设计中,而不是只是当作一种教条在那里宣传。当然这也和 python 本身的特点有关,即 python 完美解决了多重继承的问题,使得多重继承没有那么可怕,相反让程序员如虎添翼。 |
70
nanlong 2016-11-11 09:07:00 +08:00 via iPhone
@georgema1982 非常好 请你坚定不移的走 Django 路线 加油
|
71
EzVoodoo 2016-11-15 19:55:15 +08:00
@georgema1982 写得不错。 Rails 和 Django 都用过,总的感觉还是 Too much magic in Rails; Django is much cleaner and clearer.
|