18.面向切面编程

予早 2024-10-05 10:55:19
Categories: Tags:

装饰器

blinker

https://zhuanlan.zhihu.com/p/435076618

import time

from blinker import signal

# 创建一个名为 'user_registered' 的信号
user_registered = signal('user_registered')


# 定义两个处理函数
def send_welcome_email(sender, user):
    time.sleep(10)
    print(f"Sending welcome email to {user}")


def log_registration(sender, user):
    print(f"Logging user registration: {user}")


# 连接处理函数到信号
user_registered.connect(send_welcome_email)
user_registered.connect(log_registration)


def reg():
    # 模拟用户注册并发出信号
    new_user = {'username': 'john_doe', 'email': 'john@example.com'}
    user_registered.send(user=new_user)


reg()
print("over")


# blinker是同步的,用来解耦代码

blinker 在三方项目中的使用

flask

mongoengine

MongoEngine提供的信号如下: