没有项目描述
mongo_observer的Python项目详细描述
Mongo观察员
mongo observer旨在提供异步订阅的简单方法。 声明给定mongo集合上的更改事件。
安装
pip install mongo_observer
用法
观察者
Observer处理给定集合上的状态更改观察 并分派事件,将责任委托给处理程序。
处理程序
处理程序是实现OperationHandler协议的对象 并实现以下抽象方法:
插入时的异步定义(self,操作:dict[str,any])
其中operation是包含与 对oplog的操作。它将包含以下键:
- ts:操作的时间戳a
- h:操作的唯一有符号长标识符
- op:表示操作类型的字符
- ns:由 '数据库.集合'
- o:插入的文档
更新时的异步定义(self,操作:dict[str,any])
其中operation是包含与 对oplog的操作。它将包含以下键:
- ts:操作的时间戳
- h:操作的唯一有符号长标识符
- op:表示操作类型的字符
- ns:由 '数据库.集合'
- o:对文档执行的操作数据
- o2:带有要更新的文档的单个id键的dict
删除异步定义(self,操作:dict[str,any])
其中operation是包含与 对oplog的操作。它将包含以下键:
- ts:操作的时间戳
- h:操作的唯一有符号长标识符
- op:表示操作类型的字符
- ns:由 '数据库.集合'
- o:删除的文档的带有单个id键的dict
反应收集
ReactiveCollection是只读的、内存中的、非持久的 远程mongo集合的副本。它对引起的状态变化作出反应 通过远程上的写操作(插入、更新和删除) 收藏。
importasynciofrommotor.motor_asyncioimportAsyncIOMotorClientfrommongo_observer.observerimportObserverfrommongo_observer.operation_handlersimportReactiveCollectionasyncdefrun(loop):client=AsyncIOMotorClient('mongodb://127.0.0.1')collection_to_observe=client['your_db']['your_collection']reactive_collection=awaitReactiveCollection.init_async(collection_to_observe)observer=awaitObserver.init_async(oplog=client['local']['oplog.rs'],operation_handler=reactive_collection,namespace_filter='your_db.your_collection')loop.create_task(observer.observe_changes())loop=asyncio.get_event_loop()loop.run_until_complete(run(loop))loop.run_forever()
一旦ReactiveCollection.init_async运行,它将执行初始 与远程集合同步。然后我们将其连接为 ^一个Observer的{tt25}$,我们准备好了 observe_changes到集合的当前状态。
反应部分收集
待办事项