这是我的插件的简化版本:
var CustomClassName = "FirstClass"
class CustomClassName { // the name of this class should be "FirstClass" now.
init() {
}
}
它适用于第一个请求,但随后的所有请求都失败:
class var CustomClassName = aVariable {
如何在每个请求中重置class MyPlugin(object):
''' My plugin.
'''
api = 2
def __init__(self):
self.time = datetime.now()
def apply(self, callback, route):
request.my_attr = self.time
@wraps(callback)
def wrapper(*args, **kwargs):
cb_response = callback(*args, **kwargs)
return cb_response
# Forget any cached values.
route.reset()
# Replace the route callback with the wrapped one.
return wrapper
my_plugin = MyPlugin()
@route('/my_route', method=['GET', 'POST'], apply=[my_plugin])
def my_route():
""" Http Handler.
"""
response.content_type = 'text/txt;'
time = request.my_attr
print(time)
run(host=HOST, port=PORT, debug=DEBUG, quiet=QUIET)
?
答案 0 :(得分:0)
目前尚不清楚你的最终目标是什么,或者你的意思是“在每个请求上重置request.my_attr”(因为在别处你提到“缓存值”,这意味着你做打算做一些缓存)。但这条线似乎很清楚
request.my_attr = self.time
是在错误的地方。您可能希望将其移动到wrapper
函数中,因为(可能)然后意图是在每个请求上运行该行:
@wraps(callback)
def wrapper(*args, **kwargs):
request.my_attr = self.time
cb_response = callback(*args, **kwargs)
return cb_response
我不确定这对我有意义,但我不知道你的目标是什么,所以也许它确实是你想要的。无论如何,将行移动到wrapper
会纠正HTTP 500.希望有所帮助!如果没有,请添加一两行描述您要完成的任务,我会尽力帮助。