我们使用的是Python 3.5,Django 1.10和PostgreSql 9.6 DB
我们需要一个对象(项目)之一的自动增量字段,并且无法使用数据库自动增量来实现,因为增量有另一个依赖性。
对于每个项目的项目,该字段应递增(每个项目可以包含多个项目)。
我们决定使用基本上创建另一个表的django-sequences包(我们使用与我们的模型相同的数据库),并在需要时通过锁定数据库并根据相关参数递增最高值来递增字段(在我们的例子中是项目ID)。好像很有用。
并行存在多个请求时会出现此问题。似乎数据库被锁定,我们在几次请求后开始获得504
为什么会发生这种情况?
这是django-sequences使用:
if instance.identifier < 0:
with transaction.atomic():
instance.identifier = get_next_value(
'project__' + str(instance.project.id) + '__item__identifier',
initial_value=1,
nowait=False
)
更新:似乎504来自Apigee,设置为10秒超时。