一个tornado+coroutine+yield的例子

一个简单的tornado+coroutine+yield的例子

tornado+coroutine+yield

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MainHandler(tornado.web.RequestHandler):
    cond = None

    @tornado.gen.coroutine
    def test(self):
        print('a')
        a = 1
        self.cond = tornado.locks.Condition()
        yield self.cond.wait(timeout=datetime.timedelta(seconds=10))
        a = 2
        print('b')
        return a, 2

    @tornado.gen.coroutine
    def get(self):
        a, b = yield self.test()
        print(a, b)
        self.render("index.html")

这几个需要配合使用,使用得不好就可能会出现下面的错误:

1
2
3
AssertionError: yield from wasn't used with future
tornado.gen.BadYieldError: yielded unknown object
ValueError: not enough values to unpack (expected 2, got 0)

本文网址: https://pylist.com/topic/170.html 转摘请注明来源

Suggested Topics

Tornado 构建一个 Comet 应用

Comet -- 基于 HTTP 长连接、无须在浏览器端安装插件的“服务器推”技术为“Comet”,这里介绍用Tornado 构建一个 Comet 应用的经验。...

tornado websocket 客户端与服务器端示例

最近在网上找了些websocket的资料看了下,node和tornado等等本身已经实现了websocket的封装,所以使用起来会比较简单,php如果想要写websocket还需要自己跑一整套流程,比较麻烦。...

服务器推送技术 Tornado comet

long poll的原理是,客户端与服务器将建立一条长连接,也就是说,客户端会发出一个请求,而服务器,将阻塞请求,直到有数据需要传递,才会返回。 ...

Leave a Comment