我使用bottle.route()
将HTTP查询重定向到适当的函数
import bottle
def hello():
return "hello"
def world():
return "world"
bottle.route('/hello', 'GET', hello)
bottle.route('/world', 'GET', world)
bottle.run()
我想为每个调用添加一些预处理,即对源IP进行操作的能力(通过bottle.request.remote_addr
获得)。我可以在每条路线中指定预处理
import bottle
def hello():
preprocessing()
return "hello"
def world():
preprocessing()
return "world"
def preprocessing():
print("preprocessing {ip}".format(ip=bottle.request.remote_addr))
bottle.route('/hello', 'GET', hello)
bottle.route('/world', 'GET', world)
bottle.run()
但这看起来很尴尬。
有没有办法在全局级别上插入预处理功能?(以便每次调用都通过它?)
答案 0 :(得分:4)
我认为你可以使用瓶子的插件
doc here:http://bottlepy.org/docs/dev/plugindev.html#bottle.Plugin
代码示例
import bottle
def preprocessing(func):
def inner_func(*args, **kwargs):
print("preprocessing {ip}".format(ip=bottle.request.remote_addr))
return func(*args, **kwargs)
return inner_func
bottle.install(preprocessing)
def hello():
return "hello"
def world():
return "world"
bottle.route('/hello', 'GET', hello)
bottle.route('/world', 'GET', world)
bottle.run()