如何预处理所有调用?
How to preprocess all calls?
我使用 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()
但这看起来很尴尬。
有没有办法在全局级别插入预处理功能?(以便每次调用都通过它?)
我觉得你可以使用 bottle 的插件
文档在这里: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()
我使用 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()
但这看起来很尴尬。
有没有办法在全局级别插入预处理功能?(以便每次调用都通过它?)
我觉得你可以使用 bottle 的插件
文档在这里: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()