【发布时间】:2016-08-17 11:24:21
【问题描述】:
对于我们的客户,我需要生成唯一的条形码。任何客户不得拥有两个相同的条形码。条码的组成如下:
- 客户前缀
- 索引号
- 校验位
我想跟踪每个客户使用的最新索引号,并在生成条形码时检索最新索引号并将该索引号加一。
现在当两个进程尝试同时生成条形码时会出现此问题。进程 A 和 B 都询问最新的索引号,都收到相同的最新索引号并创建相同的条码。
有没有办法确保即使异步提供条形码生成,也不会生成重复的条形码?构建它的系统是 Django 1.9、带有 PostgreSQL 数据库的 Python 3.5。
【问题讨论】:
-
拥有超过 1000 分的你应该知道你需要发布你的 django 模型或你的 postgresql 表
-
问题是我还没有任何模型/表格,我还在想一个解决方案如何做到这一点。
-
这不是真正的话题吗?
-
我不明白你的意思。我已经发布了我的问题描述,并提到了我正在使用的技术,我正在寻找可能的解决方案。
-
@physicalattraction> 除了下面的答案之外,如果您存储交易(我假设客户 ID + 索引号是诸如购买之类的交易),例如,对于日志记录,您可以只使用主要的交易的关键来跟踪它。
标签: python django postgresql barcode race-condition