Tornado 的 Asynchronous 和 MVC 的架构组合问题

2011-08-25 01:40:35 +08:00
 fsw90628
请教个问题:

在用Tornado的时候,如果
1) 采用MVC架构,
2) 想要实现代码复用,
3) Async异步 database access (with MongoDB through AsyncMongo from bit.ly)
这样的结果就是很繁琐,
以用户注册为例,流程大概如下:
Controller
->UserHandler.register
->UserHandler.check_registered
->UserHandler.on_check_registered
->UserHandler.do_register
->UserHandler.on_do_register
->Controller

里面的callback到处都是,很糟糕

如果不用Async的话,就清晰得多
Controller
->UserHandler.register
->UserHandler.check_registered
->UserHandler.register
->Controller

大家都是怎么组织代码才能做到简单清晰呢?我觉得都破坏了python的简单之美了

-如果描述的不够清晰,我可以附上代码。
6185 次点击
所在节点    Tornado
1 条回复
ayanamist
2011-08-25 09:15:04 +08:00
建议你参考一下Datastore Plus的实现,利用一个总的调度,加上yield和Decorator,来用同步的方式写异步的代码

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

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

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

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

© 2021 V2EX