Project Thoth的消息模块
项目描述
这提供了一个名为 thoth-messaging 的库,用于项目 Thoth。它是一个封装所有消息(此处为Kafka via Faust)原语的基本模块。
使用MyPy进行类型提示
此模块使用pydantic进行类型提示并强制执行消息中的常规模式。如果您使用mypy检查代码,请将以下内容添加到您的mypy配置文件中
[mypy]
plugins = pydantic.mypy
如果您在自己的模块中创建pydantic模型实例,应直接使用相关消息文件中的MessageContents类。使用foo_bar_message.model将仅对BaseMessageContents进行类型提示。
开发和测试
对于开发和测试,在您的机器上运行本地Kafka实例非常有用
我们提供了一个docker-compose文件,可以帮助您快速启动一个基本的Kafka服务器;此文件基于Single Zookeeper/Multiple Kafka。
要启动Zookeeper以及Kafka服务器,只需运行$ podman-compose up或$ docker-compose up,根据您使用的系统选择适当的选项。
一旦Kafka启动并运行,您就应该准备好开始编写自己的消息生产者和消费者代码。Kafka和Python之间的接口由一个名为Confluent Kafka的库处理。在开发自己的应用程序时,Faust的文档将非常有帮助。如果您想查看Thoth团队的生产者和消费者示例,请查看以下两个存储库:investigator和package-update。
在测试您的应用程序时,使用控制台生产者和消费者可能很有用,要创建一个,只需运行以下命令将bash外壳附加到您的Kafka服务器之一:$ podman exec -it messaging_kafka1_1 bash,您的容器名称应与这里给出的相同,如果不是,请运行$ podman ps并选择正确的容器。这些容器在适当的位置包含了所有的Kafka二进制文件,因此您可以简单地运行$ kafka-console-consumer、$ kafka-console-producer或任何您可能认为有用的其他kafka命令。
示例
kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning
您可以使用文件通过CLI发送消息作为-
示例
pipenv shell
python cli.py --message-file messages_to_be_sent.json
注意 数据不可持久。一旦删除了pods,与其相关的数据也会被删除。
陷阱
此库中的一些模式被定义为Dict[str, Any]。这通常不能准确地反映实际所需的模式。这些模式可以有意地模糊不清,因为它们在别处定义,并且从必需的库中导入它们会将thoth-messaging版本过于紧密地耦合到其他组件,在最好情况下,在最坏情况下会引入循环依赖。简而言之,thoth-messaging是天真且只能强制执行它已定义的模式。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。