首页 > 解决方案 > 如何改进处理多个请求的烧瓶应用程序?

问题描述

我对提出堆栈溢出问题和使用烧瓶构建 Web 应用程序非常陌生,所以如果我说一些不正确的话,我提前道歉。

我正在构建一个处理安排约会的烧瓶网络应用程序,自然我正在使用 3rd 方库/包装器来进行 API 调用和处理数据库查询(sqlite)。就目前而言,我的应用程序不使用任何类型的异步代码。我开始考虑多个用户尝试登录或预约的场景,包括数据库查询和 API 调用,以及我的应用程序是否会阻塞。鉴于它都是同步的,如果多个用户确实尝试登录并预约,它会在处理其他用户请求时阻止某些用户,还是完全独立于我的烧瓶应用程序并依赖于运行应用程序的 WSGI 服务器?关于如何提高我的应用程序在处理多个请求方面的性能的任何提示?

多个用户尝试同时访问的示例路由:

...

@app.route('/signup/')
def signup():
    # has a form that takes user input and submits it for processing in process_signup()
    return render_template('signup.html')


@app.route('/process_signup/', methods=['POST'])
def process_signup():
    form = request.forms
    username = form['username']
    password = form['password']

    # insert values into customer db in a synchronous fashion 
    db = db() #gets the database
    cursor = db.execute('insert into customers (username, password) values (?,?)', [username, password])
    db.commit()

    #send out a verification email using email api without any async
    email_new_customer()

    return redirect(url_for('signin'))

注意:我读到最好让 db 查询和 api 调用异步处理,但不确定从哪里开始或与烧瓶兼容的库类型将帮助我实现这一点

谢谢你的帮助,我可能对这一切是如何运作的有很大的误解,因为我对此很陌生,所以我很抱歉。

标签: pythonflask

解决方案


推荐阅读