
我没有开发网站的经验, 只是看过了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 R4rvZ6agNVWr56V0 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简单的实现异步 |