我没有开发网站的经验, 只是看过了Python和Tornado那本100多页的入门书.
现在有个项目是做个管理系统网站, 打算用 Mongodb 数据库.
而且我对异步什么的没有任何经验,
请问有什么要注意的?
1
supersouth 2015-01-20 13:52:42 +08:00
1. Tornado的优势在于异步处理,高并发连接程序性能;所以你要写管理系统,推荐使用django,快而且文档全;
2. Tornado和Mongodb一起用时,有个mongodb的python异步库可以用,用Tornado的ioloop实现的。请务必用这个库,否则达不到异步的效果。 |
2
jecvay OP @supersouth 谢谢!! 如果除了管理系统, 我要开发一个比赛功能, 我想写出比赛相关的各种API, 然后网站的功能都通过调用API来完成, 这个功能会很多人同时在线频繁点击, 那么Tornado是否有优势(API 以及 多人在线)?
|
3
supersouth 2015-01-20 14:01:24 +08:00
@jecvay 对的,对于这种一起频繁交互的webapp,tornado比django要强很多。
|
4
jecvay OP @supersouth 喔!
|
5
fanta 2015-01-20 15:03:15 +08:00
一楼已经说的很全了,补充点: 做长连接可以使用, 使用异步, 得习惯编程方式, 异步库(asyncmongo, motor)应该设置一个上限连接数.
|
6
zhkzyth 2015-01-20 15:19:39 +08:00
之前做过一个tornado+motor的在线订单系统,lz也可以试试把这两个结合起来。
管理功能部分可以用django或者flask来做,然后这个比赛的api就走tornado。不过这样会导致两个数据库,一个是mysql的,一个是mongodb... |
7
GeekGao 2015-01-20 15:25:58 +08:00
数据量大时Mongodb 有瓶颈,建议先将数据插入队列,再异步写入
|
8
dingyaguang117 2015-01-20 16:02:40 +08:00
用gevent+ X框架 做长连接靠谱不?
|
9
cevincheung 2015-01-20 16:03:14 +08:00
换PostgreSQL :)
|
10
9hills 2015-01-20 16:23:22 +08:00
没写过异步程序,请不要用tornado。。。真的,坑太多
我见过把Tornado写成同步的,qps只有16,你没看错,他起了16个进程。不忍直视 |
11
fanta 2015-01-20 17:20:13 +08:00
是的,tornado不适全做CPU密集的任务,I/O密集型推荐.
|
12
mqingyn616 2015-01-21 11:46:54 +08:00
tornado的设计思路和django完全就是不一样的,如果用传统的web框架思维去使用tornado,你会觉得处处都是坑,你会吐槽,你会不理解为什么会这样。
tornado在同步条件下依然可以工作的很好,关键看你怎么用,而且你使用tornado就意味着你需要更多的关注性能调优和其他东西,不仅仅是业务逻辑了,只会套逻辑写业务的rd,显然是不适合使用的。 |
13
mqingyn616 2015-01-21 12:00:09 +08:00
多看tornado的源码,受益匪浅。特别是ioloop,gen和concurrent模块 。以及在新版本中,也支持使用线程池的方式模拟异步调用,这可以让你将传统的耗时同步代码异步化,当然这并不能提高并发能力,只能够解决系统阻塞问题。tornado的作者bdarnell 在新版本也注明了,tornado部分模块不再是线程安全的。
|
15
veezzz 2015-02-12 10:50:33 +08:00
Tornado + Motor/MotorEngine
需要看看怎么用tornado的gen简单的实现异步 |