我有以下代码:烧瓶中的定制装饰器不工作?
import datetime
from flask.app import Flask
app = Flask(__name__)
app.config.from_object(__name__)
app.debug = True
def track_time_spent(name):
def decorator(f):
def wrapped(*args, **kwargs):
start = datetime.datetime.now()
ret = f(*args, **kwargs)
delta = datetime.datetime.now() - start
print name, "took", delta.total_seconds(), "seconds"
return ret
return wrapped
return decorator
@app.route('/foo')
@track_time_spent('foo')
def foo():
print "foo"
return "foo"
@app.route('/bar')
@track_time_spent('bar')
def bar():
print "bar"
return "bar"
我无法得到FOO返回 '富':
$ curl localhost:8888/foo
bar
(flask window)
bar
bar took 8.2e-05 seconds
127.0.0.1 - - [18/Apr/2013 19:21:31] "GET /foo HTTP/1.1" 200 -
$ curl localhost:8888/bar
bar
(flask window)
bar
bar took 3.5e-05 seconds
127.0.0.1 - - [18/Apr/2013 19:21:35] "GET /bar HTTP/1.1" 200 -
这是怎么回事?为什么我的装饰器不工作?
编辑
我不认为你们似乎能看出问题。
当我有@app.route
@track_time_spent
之前,都方法返回吧。这里的错误是,在http响应以及打印功能中调用localhost:8888/foo导致bar
。
你是什么意思“其他窗口”? –
烧瓶不使用您直接写入的函数对象,而是将其存储到底层的werkzeug库中并根据请求调用它们。 – thkang