小编str*_*ker的帖子

使用Flask或Quart NameError:未定义全局名称'g'

尝试测试Flask应用程序时出现问题,无法访问该g变量。

经过测试的api如下所示:

user = query_object.get(g.user_id)   # here the exception raises
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,它会引发:

NameError: global name 'g' is not defined
Run Code Online (Sandbox Code Playgroud)

python flask quart

6
推荐指数
1
解决办法
1743
查看次数

进行异步调用时,龙卷风中的“ yield”如何工作?

最近,我正在学习《龙卷风简介》,并且遇到了以下代码:

class IndexHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    @tornado.gen.engine
    def get(self):
        query = self.get_argument('q')
        client = tornado.httpclient.AsyncHTTPClient()
        response = yield tornado.gen.Task(client.fetch,
                "http://search.twitter.com/search.json?" + \
                urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}))
        body = json.loads(response.body)

        [...omitted the following code...]
Run Code Online (Sandbox Code Playgroud)

我曾经学习过,这yield是将通用函数转换为生成器的关键字,当它以形式使用时,other = yield foo意味着“屈服foo,并且当向我发送值时,将其他值设置为该值”。所以我在ipython中尝试了以下代码:

In [1]: result = 'init'     #set a global variable

In [2]: def test_yield():
   ...:     global result
   ...:     print 'start test...'
   ...:     result = yield 'foo'
   ...:     print 'end test...'
   ...:     

In [3]: t = test_yield() …
Run Code Online (Sandbox Code Playgroud)

python asynchronous yield generator tornado

5
推荐指数
2
解决办法
1920
查看次数

标签 统计

python ×2

asynchronous ×1

flask ×1

generator ×1

quart ×1

tornado ×1

yield ×1