如何避免烧瓶插入重复的条目?

时间:2015-06-10 08:19:57

标签: python flask gunicorn

我想使用下面提供的代码剪辑来更新我的数据库:

@app.route('/update')
def update():
    os.system('python update.py')
    return redirect(url_for('home'))

但是,当我使用gunicorn -w 4运行应用并点击网址http://127.0.0.1:5000/update一次时,它会运行python update.py两次。相同的内容被插入到数据库中两次。我认为它可能是枪手的多重处理导致问题。

我也想让这个专栏独一无二,但它不符合我的需要。

我该如何解决这个问题? 你能告诉我一些好的解决方案,每天自动更新数据库。

1 个答案:

答案 0 :(得分:0)

您只能在POST个请求上更改系统状态,例如对数据库进行任何更改。所以:

@app.route('/update',  methods=['POST'])
def update():
    os.system('python update.py')
    return redirect(url_for('home'))

否则,您可能会多次冒险,例如浏览器预加载,浏览器重启,取消浏览器选项卡以及许多其他选项。

我还会使用from . import update代替os.system