我有以下信號。是否可以像我在這里那樣“堆疊”這兩個裝飾器?@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
提交
取消