python - 如何改进处理多个请求的烧瓶应用程序?
问题描述
我对提出堆栈溢出问题和使用烧瓶构建 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 调用异步处理,但不确定从哪里开始或与烧瓶兼容的库类型将帮助我实现这一点。
谢谢你的帮助,我可能对这一切是如何运作的有很大的误解,因为我对此很陌生,所以我很抱歉。
解决方案
推荐阅读
- java - 合并流
- node.js - 在 mongo db 中搜索文档的多个数组中是否存在字符串
- sql - 在给定时区的情况下,如何查找本地时间不在开始时间和结束时间之间的用户 ID?
- android - 调用一次后删除观察者
- sql - 使用 Soundex 函数或 Levenshtein 距离模糊匹配 pyspark 或 SQL 中的字符串
- java - 执行 replaceAll 后无法删除斜线
- algorithm - 绘制二项式堆
- cocoapods - 'FBSDKLoginManager' 没有可见的@Interface 声明选择器'loginWithReadPermissions:fromViewController:handler:'
- solr - Solr 通配符和转义字符一起
- methods - sequelize 实例和类方法的替代方案