我有以下信号.是否有可能像我在这里'堆叠'这两个装饰器一样?
@receiver(signal=charge_succeeded)
@transaction.atomic
def create_influencer_transaction(sender, order, charge, **kwargs):
pass
Run Code Online (Sandbox Code Playgroud)
是.
考虑装饰器的工作原理,这相当于
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
)
Run Code Online (Sandbox Code Playgroud)
- transaction.atomic将返回一个具有原子性包装器逻辑的新函数,但receiver只返回相同的函数.
但是,这里的顺序很重要(你已经做对了); 如果装饰器是另一种方式,receiver将注册非原子版本,这是不好的.
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |