django mysql 加锁_Django数据库事务和死锁

当与多个进程/工作人员与Gunicorn运行Django我遇到了一些手动MySQL数据库事务的死锁问题。Django数据库事务和死锁

DatabaseError(1205, 'Lock wait timeout exceeded; try restarting transaction')

我的设置使用多个数据库,我的函数需要传递数据库才能在调用它时使用。出于这个原因,我不能使用标准Django transaction decorators,因为db需要被硬编码为参数。我检查了装饰代码来看看事务是如何管理的,我的功能看起来像这样:

from django.db import connections

def process(self, db, data):

# Takeover transaction management

connections[db].enter_transaction_management(True)

connections[db].managed(True)

# Process

try:

# do things with my_objects...

for obj in my_objects:

obj.save(using=db)

connections[db].commit()

except Exception as e:

connections[db].rollback()

finally:

connections[db].leave_transaction_management()

任何人能发现什么可能是错的怎么回事?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值