创建记录后,我需要在非 tryton 数据库上执行通知。
我看到可以覆盖创建函数..但是有没有更好的解决方案可以确保在数据库提交之后?
我这样做
@classmethod def create(cls, values): newObject = super(Inventory, cls).create(values) newObject.notifieToMainServer()
问候
创建记录后,我需要在非 tryton 数据库上执行通知。
我看到可以覆盖创建函数..但是有没有更好的解决方案可以确保在数据库提交之后?
我这样做
@classmethod def create(cls, values): newObject = super(Inventory, cls).create(values) newObject.notifieToMainServer()
问候
是的,您可以使用tryton 事务的atexit函数在事务提交时调用函数。
所以你的代码将是这样的:
from trytond.transaction import Transaction
@classmethod
def create(cls, values):
records = super().create(values)
Transaction.atexit(notifyToMainServer)
return records
如果需要在无法发送通知时阻止事务的提交,可以通过在 Transaction 上加入一些数据管理器来使用两阶段提交协议。Tryton 默认实现了一个sendmail_transactional函数,该函数可用作实现 DataManager 以发送您的自定义通知的参考。
希望能帮助到你!