V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
fsw90628
V2EX  ›  Tornado

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

  •  
  •   fsw90628 · 2011-08-25 01:40:35 +08:00 · 6324 次点击
    这是一个创建于 4837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教个问题:

    在用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的简单之美了

    -如果描述的不够清晰,我可以附上代码。
    1 条回复    1970-01-01 08:00:00 +08:00
    ayanamist
        1
    ayanamist  
       2011-08-25 09:15:04 +08:00
    建议你参考一下Datastore Plus的实现,利用一个总的调度,加上yield和Decorator,来用同步的方式写异步的代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:29 · PVG 19:29 · LAX 03:29 · JFK 06:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.