时间:2021-07-01 10:21:17 帮助过:2人阅读
这个事件在订单状态改变的时候就会触发,不幸的事,他触发在事务当中,当然,如果在其中另外线程去执行发送短信与邮件应该也无妨。但处于某些原因我希望在事务处理完成之后调用。
另外一种方式,监听对象的更新事件,并在更新事件处理中监听这个session commit事件。这样就能够完成commit之后对该对象的处理。
def pay_success_reminder2(order_no): def func(session): try: ...... pass except Exception as e: pass return True return func @event.listens_for(Order, ‘after_insert‘,raw=True) @event.listens_for(Order, ‘after_update‘,raw=True) def pay_success_reminder1(mapper, connection, target):# ‘‘‘ 已经充值成功,给用户发送提醒 :return: ‘‘‘ if target.dict["status"]!=target.committed_state["status"] and target.dict["status"]=="pay_success": event.listen(target.session,"after_commit",pay_success_reminder2(target.dict["order_no"]) )
如果需要将某些信息传递给session状态监听处理函数,则在需要使用函数包装的方式传递变量。
sqlalchemy中使用event设置条件触发短信与邮件通知
标签: