我有以下信号。是否可以像我在这里那样“堆叠”这两个装饰器?@receiver(signal=charge_succeeded)@transaction.atomicdef create_influencer_transaction(sender, order, charge, **kwargs): pass
1 回答
繁星coding
TA贡献1797条经验 获得超4个赞
是的。
考虑装饰器的工作方式,这相当于
def create_influencer_transaction(sender, order, charge, **kwargs):
pass
create_influencer_transaction = transaction.atomic(
create_influencer_transaction
)
create_influencer_transaction = receiver(signal=charge_succeeded)(
create_influencer_transaction
)
–transaction.atomic将返回一个具有原子性包装逻辑的新函数,但receiver只会返回相同的函数。
但是,这里的顺序确实很重要(而且您做对了);如果装饰器是相反的,receiver则会注册非原子版本,这不好。
添加回答
举报
0/150
提交
取消