python - 如何动态加载flask的url route
PHPz
PHPz 2017-04-17 11:23:16
[Python讨论组]

把urlroute规则写到数据库中了,然后程序启动的时候动态加载,但是如果我在数据库中修改了一条数据,怎么通知程序重新加载?
例如在我的app.py中:

res = dbSession.query(URLMap).all()
for x in res:  
	print 'ROUTE LOAD:/r/%s'%(x.access_token)
	app.add_url_rule('/r/%s'%x.url,x.url,do_some_thing,methods=['POST','GET'])

然后我在数据库中插入一条新的URLMap记录,然后这个时候有没有办法让app加载这个新记录?我是部署在SAE上的环境,现在的方法是我在SAE上重新启动这个应用(很幼稚的切换版本,或者在web editor中随便改个代码,SAE就会重启这个app)……有没有不这么暴力的方法?

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

可以考虑使用app.url_map.add,而不是app.add_url_rule。

from flask import Flask
from werkzeug.routing import Rule
import random

app = Flask(__name__)


@app.route('/')
def hello_world():
    count = random.randint(1, 99999)
    rule = Rule("/hello%d" % count, endpoint='hellos', methods=['POST', 'GET'])
    app.url_map.add(rule)
    print app.url_map
    print app.url_map._rules

    return 'Hello World!'


@app.route('/hello')
def hellos():
    return "hello world!"


if __name__ == '__main__':
    app.debug = True
    app.run()

天蓬老师

使用url_for函数,动态传参,应该可以满足你的需求。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号