【发布时间】:2016-09-08 06:34:05
【问题描述】:
我正在使用 sqlalchemy 编写一些函数。这些函数在事务内部调用,例如:
def create_order(session, *arg, **kw):
# create order object
order = Order(xxxx=xxx)
session.add(order)
# order extra operations
order_extra_data = OrderExtraData(yyyy=yyyy)
session.add(order_extra_data)
# more operations
....
# email should be sent to the order's owner
成功创建订单后,应向用户发送电子邮件。但是在 create_order 结束时,事务还没有提交,可能会被后面的代码中止。所以这个函数不应该直接发送邮件。相反,它应该注册一个一次性事件处理程序,该处理程序仅在提交会话后触发(如果事务回滚或关闭,则不会触发和清除)。我该如何实现呢?
【问题讨论】:
标签: events transactions sqlalchemy