Python编程:实现消息发布/订阅模型

简介: Python编程:实现消息发布/订阅模型

基本模型:

发布者 -> 交换机 <-> 订阅者

代码示例

# -*- coding: utf-8 -*-


# 消息发布/订阅模型

from collections import defaultdict
from contextlib import contextmanager


class Exchange(object):
def __init__(self):
self._subscribers = set()

def attach(self, task):
self._subscribers.add(task)

def detach(self, task):
self._subscribers.remove(task)

def send(self, message):
for subscriber in self._subscribers:
subscriber.send(message)

@contextmanager
def subscribe(self, *tasks):
for task in tasks:
self.attach(task)
try:
yield
finally:
for task in tasks:
self.detach(task)


_exchanges = defaultdict(Exchange)


def get_exchange(name):
return _exchanges[name]


class Task(object):
def send(self, message):
"""发送消息的方法"""
print(message)


task1 = Task()
task2 = Task()


# 1、手动 添加注册,取消注册
exchage = get_exchange("message")
exchage.attach(task1)
exchage.attach(task2)

exchage = get_exchange("message")
exchage.send("你好")
# 你好
# 你好

exchage.detach(task1)
exchage.detach(task2)

# 2、使用上下文管理器

exchage = get_exchange("message")
with exchage.subscribe(task1, task2):
exchage.send("你好啊")

# 你好啊
# 你好啊

参考

12.11 实现消息发布/订阅模型

            </div>
目录
相关文章
|
Ubuntu 开发工具
Ubuntu更换阿里云软件源
Ubuntu更换阿里云软件源
142869 0
|
2月前
|
算法 安全 开发者
大模型部署指南:从个人玩转到企业级应用,这4款工具必看!
本文介绍了五款主流大语言模型部署工具,帮助用户根据需求选择合适的方案。包括适合个人使用的 Ollama 和 LM Studio、优化低配设备运行的 llama.cpp、企业级部署的 vLLM,以及 Hugging Face 推出的 TGI 框架,覆盖从本地体验到高性能服务的多种场景。
|
8月前
|
人工智能 自然语言处理 Serverless
AI 大模型+智能客服:自动识别客户意图,实现高效沟通
本方案旨在介绍如何部署 AI 大模型实现对客户对话的自动化分析,支持多人、多语言识别,精准识别客户意图、评估服务互动质量,实现数据驱动决策。
913 14
|
9月前
|
人工智能 自然语言处理 算法
接入DeepSeek需要做算法备案吗?一文读懂算法备案的那些事儿
在AI快速发展的今天,算法备案成为企业合规运营的关键。本文通过五个案例解析接入DeepSeek是否需备案:1) 微调模型需备案,流程4-6个月;2) 面向公众服务需备案;3) 内部使用通常无需备案;4) 个人自用无需备案;5) 面向特定专业人士通常无需备案。了解这些要求,确保企业在享受AI红利的同时合规运营,规避风险。
|
9月前
|
存储 人工智能 并行计算
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
KTransformers 是由清华大学和趋境科技联合推出的开源项目,能够优化大语言模型的推理性能,降低硬件门槛。支持在仅24GB显存的单张显卡上运行671B参数的满血版大模型。
2689 8
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
|
11月前
|
人工智能 算法 机器人
开源极客桌面机器人 Desk-Emoji
Desk-Emoji 是一款开源的实体 AI 桌面陪伴机器人,具备酷炫外观、流畅 Emoji 表情、双自由度云台及大模型语音聊天功能,支持手势识别和情绪反馈,适合 DIY 和二次开发,是性价比极高的桌面机器人。
2557 1
开源极客桌面机器人 Desk-Emoji
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
13925 2
|
负载均衡 网络协议 网络虚拟化
有了 RSTP 为什么还需要 MSTP?
【5月更文挑战第6天】
486 1
有了 RSTP 为什么还需要 MSTP?
|
存储 缓存 监控
Flink性能优化小结
Flink性能优化小结