Я создаю систему заказов на Google App Engine.Google app engine ndb: не использовать один и тот же идентификатор
Предположим, я следующую модель заказа:
class Order(ndb.Model):
time: DateTimeProperty()
дата плюс порядковый номер в виде строки используется как идентификатор одного объекта:
today = str(datetime.datetime.now())[:10].replace('-','')
# Fetch today's orders
orders = Order.query(...).order(-Order.time).fetch(1)
if len(orders)==0: # No entities: today's first order
orderNum = today + '00001'
else:
orderNum = str(int(orders[0].key.id())+1)
order = Order(id=orderNum)
order.date = datetime.datetime.now()
order.put()
Предположим, существует несколько клерков и они могут выполнять программу одновременно. Очевидная проблема заключается в том, что они могут получить то же самое orderNum
и фактически записать в один и тот же объект.
Как сделать, чтобы такая ситуация не происходила?
Отлично! Большое спасибо. –