[django] Exception Value: DatabaseWrapper objects created in a thread can only be used in that same

[django] Exception Value: DatabaseWrapper objects created in a thread can only be used in that same thread.

问题描述:

使用django框架实现的web后端服务,使用orm语句插入数据时报错,报错信息如下;

image-20200326101024514

django.db.utils.DatabaseError: DatabaseWrapper objects created in a thread can only be used in that same thread. The object with alias ‘default’ was created in thread id 8576 and this is thread id 11652

报错代码位置如图。

image-20200326101256272

问题分析:

项目本地调试是完全ok的,部署到服务器上就出现这个问题。

1.好了开始对代码做各种排查,发现并没有问题。

2.然后开始各种github搜索问题,这个问题出现的频率也不高,最终找到两个比较符合说法

  • gevent模块开线程的冲突:https://blog.csdn.net/u014007037/article/details/86645862
  • gunicorn起服务的冲突:https://github.com/benoitc/gunicorn/issues/927

问题解决

突然想到,我们项目开始使用uwsgi启动服务的,也是在问题发生前换成了gunicorn部署,于是赶紧换回uwsgi来启动服务,成功了!!

查看了gunicorn的配置文件,发现里面也调用了gevent的模块。

image-20200326113005253

这样的话,大概率就是gevent的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值