用 Tornado + Mongodb 开发要注意什么?

2015-01-20 13:35:00 +08:00
 jecvay

我没有开发网站的经验, 只是看过了Python和Tornado那本100多页的入门书.
现在有个项目是做个管理系统网站, 打算用 Mongodb 数据库.
而且我对异步什么的没有任何经验,

请问有什么要注意的?

10390 次点击
所在节点    Tornado
16 条回复
supersouth
2015-01-20 13:52:42 +08:00
1. Tornado的优势在于异步处理,高并发连接程序性能;所以你要写管理系统,推荐使用django,快而且文档全;
2. Tornado和Mongodb一起用时,有个mongodb的python异步库可以用,用Tornado的ioloop实现的。请务必用这个库,否则达不到异步的效果。
jecvay
2015-01-20 13:58:45 +08:00
@supersouth 谢谢!! 如果除了管理系统, 我要开发一个比赛功能, 我想写出比赛相关的各种API, 然后网站的功能都通过调用API来完成, 这个功能会很多人同时在线频繁点击, 那么Tornado是否有优势(API 以及 多人在线)?
supersouth
2015-01-20 14:01:24 +08:00
@jecvay 对的,对于这种一起频繁交互的webapp,tornado比django要强很多。
jecvay
2015-01-20 14:03:31 +08:00
fanta
2015-01-20 15:03:15 +08:00
一楼已经说的很全了,补充点: 做长连接可以使用, 使用异步, 得习惯编程方式, 异步库(asyncmongo, motor)应该设置一个上限连接数.
zhkzyth
2015-01-20 15:19:39 +08:00
之前做过一个tornado+motor的在线订单系统,lz也可以试试把这两个结合起来。

管理功能部分可以用django或者flask来做,然后这个比赛的api就走tornado。不过这样会导致两个数据库,一个是mysql的,一个是mongodb...
GeekGao
2015-01-20 15:25:58 +08:00
数据量大时Mongodb 有瓶颈,建议先将数据插入队列,再异步写入
dingyaguang117
2015-01-20 16:02:40 +08:00
用gevent+ X框架 做长连接靠谱不?
cevincheung
2015-01-20 16:03:14 +08:00
换PostgreSQL :)
9hills
2015-01-20 16:23:22 +08:00
没写过异步程序,请不要用tornado。。。真的,坑太多
我见过把Tornado写成同步的,qps只有16,你没看错,他起了16个进程。不忍直视
fanta
2015-01-20 17:20:13 +08:00
是的,tornado不适全做CPU密集的任务,I/O密集型推荐.
mqingyn616
2015-01-21 11:46:54 +08:00
tornado的设计思路和django完全就是不一样的,如果用传统的web框架思维去使用tornado,你会觉得处处都是坑,你会吐槽,你会不理解为什么会这样。

tornado在同步条件下依然可以工作的很好,关键看你怎么用,而且你使用tornado就意味着你需要更多的关注性能调优和其他东西,不仅仅是业务逻辑了,只会套逻辑写业务的rd,显然是不适合使用的。
mqingyn616
2015-01-21 12:00:09 +08:00
多看tornado的源码,受益匪浅。特别是ioloop,gen和concurrent模块 。以及在新版本中,也支持使用线程池的方式模拟异步调用,这可以让你将传统的耗时同步代码异步化,当然这并不能提高并发能力,只能够解决系统阻塞问题。tornado的作者bdarnell 在新版本也注明了,tornado部分模块不再是线程安全的。
Zuckonit
2015-01-21 21:04:13 +08:00
@fanta python不太适合CPU密集型
veezzz
2015-02-12 10:50:33 +08:00
Tornado + Motor/MotorEngine
需要看看怎么用tornado的gen简单的实现异步
lucn
2015-04-02 14:04:48 +08:00
@9hills 单个请求足够快,同步也没问题啊,10ms一个,单进程qps也100了

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

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

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

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

© 2021 V2EX