如何将argparse参数传递给sanic路由?

时间:2019-07-28 12:13:41

标签: python sanic

我希望将argparse参数传递给带有装饰器的函数。这里的策略是什么?没有全局变量如何实现?

#!/usr/bin/env python3
from sanic import Sanic, views, response
import os
import argparse

app = Sanic(__name__)

@app.route('/<var:var>')
async def get(self, request, var):
    print(path)
    return response.text(var)

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-p", "--path",
                        help="Set the server root path",
                        action="store")
    args = parser.parse_args()

    app.run(host='0.0.0.0', port=8000)

我也尝试使用视图HTTPMethodView,但没有成功

1 个答案:

答案 0 :(得分:0)

好的,因此您可以根据解析参数动态更改该路由的功能...这样(抱歉,我在手机上)

#!/usr/bin/env python3 
from sanic import Sanic, views, response 
import os 
import argparse 

app = Sanic(__name__)

@app.route('/<var:var>') 
async def get(self, request, var): 
    print(path)
    return response.text(var) 

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-p", "--path", help="Set the server root path", action="store")
    args = parser.parse_args()

    def get(var):
        # use args.p in your route function!!

    app.view_functions["/<var:var>"] = get
    app.run(host='0.0.0.0', port=8000)

可能会犯一些错误,但是您应该明白它的要旨