python-3.x - 当我们使用 gunicorn 运行烧瓶请求时,它不是线程安全的
问题描述
我正在运行一个烧瓶应用程序并使用 flask-RESTPlus 作为扩展来构建 REST API。
我有一个用户 API,可以从 postgres 中检索用户信息,还可以读取 Redis 的相关信息并发送回客户端。
我正在用 gunicorn 运行我的服务器gunicorn application:app --workers 1 --threads 12 -b 0.0.0.0:5000
现在,如果我发出多个并行请求,那么它会将一个用户信息返回到另一个用户请求的响应中。假设我对用户发出并行请求A
,B
然后C
将用户的信息发送A
到请求的响应中B
。
如果我删除--threads 12
,那么它工作正常。
我有一个庞大的代码库,所以无法添加它,但提取了一些有用的代码,所以你们可以想象它
@USER_API.route("/<string:user_id>")
class UserResource(Resource):
def get(self, user_id):
# fetch user from DB
user = User.find(user_id)
keys = ["address", "office", "xyz"]
relations = [
json.loads(fleet) for fleet in list(filter(bool, r.mget(*keys)))
]
# call function to add redis datta into user obj
user = add_relation_to_user_obj(user, relations)
return user
解决方案
推荐阅读
- angular - 离子如何从提供者那里获得承诺响应?
- google-app-maker - AppMaker 编号字段中的格式编号
- android - Android NDK:找不到 iostream 文件
- json - 如何使用 Rest 模板点击 Post Rest 服务
- php - Wordpress 多站点 URL 更改 - 未找到 wp-admin
- reactjs - 不要刷新组件更改时的输入值
- python-3.x - 如何使用 IMDBPY 检索 IMDB 用户评论?
- java - Apache POI 为日期为 30.1.2019 12:00:00 的单元格提供编号 43495.5
- sql - SQL 或 PostgreSQL 规范中的哪些内容解释了数组与原语的比较?
- python - 拆分数据框取决于使用 python 的 csv 文件大小