我想帮助理解交易和无能为力。
注意:如果您的应用在提交交易时收到异常, 它并不总是意味着交易失败。你可以收到 案例中的超时,TransactionFailedError或InternalError异常 事务已经提交并最终将被应用 成功。尽可能进行数据存储区事务处理 幂等因此,如果您重复一个事务,最终结果将是 同样的。
我有一个游戏,玩家会在发生特殊情况时收到电子邮件。玩家有时会收到2封(或更多)电子邮件。我相信它是因为我在交易中处理游戏规则,但在外面发送电子邮件。
一些伪代码:
def game_update(orders_from_player):
emails_to_send = db.run_in_transaction(process_player_orders, orders_from_player)
for e in emails_to_send:
send_email(e)
是否可以说,在发生交易冲突时我应该再次发送电子邮件列表?
重复整个请求,或者只是调用事务过程。(在本例中为process_player_orders)
我很困惑。