hedwig python库

authedwig的Python项目详细描述


https://travis-ci.org/Automatic/hedwig-python.svg?branch=masterhttps://coveralls.io/repos/github/Automatic/hedwig-python/badge.svg?branch=masterhttps://img.shields.io/pypi/v/authedwig.svg?style=flat-squarehttps://img.shields.io/pypi/pyversions/authedwig.svg?style=flat-squarehttps://img.shields.io/pypi/implementation/authedwig.svg?style=flat-squarehttps://img.shields.io/badge/code%20style-black-000000.svg

hedwig是一种服务间通信总线,在aws sqs/sns上工作,同时保持事情非常简单 直走。它使用json schemadraft v4进行模式验证,因此所有传入的 并根据预定义的架构验证传出消息。

Hedwig允许在消费者和发布者之间分离关注点,因此您的服务是松散耦合的,并且 协定由架构验证强制执行。hedwig也可以用来构建异步api。

有关服务内消息传递,请参见Taskhawk

目前只支持Python3.6+。

您可以在Read the Docs找到最新的文档。

快速启动

首先,安装库:

$ pip install authedwig

接下来,设置一些配置设置:

常用必需设置:

HEDWIG_QUEUE="DEV-MYAPP"HEDWIG_CALLBACKS={("email.send","1.*"):"send_email",}HEDWIG_MESSAGE_ROUTING={("email.send","1.*"):"send-email-v1",}HEDWIG_SCHEMA_FILE="schema.json"

使用AWS时,其他必需设置为:

AWS_ACCESS_KEY=<YOURAWSKEY>AWS_ACCOUNT_ID=<YOURAWSACCOUNTID>AWS_REGION=<YOURAWSREGION>AWS_SECRET_KEY=<YOURAWSSECRETKEY>HEDWIG_CONSUMER_BACKEND='hedwig.backends.aws.AWSSQSConsumerBackend'HEDWIG_PUBLISHER_BACKEND='hedwig.backends.aws.AWSSNSPublisherBackend'

如果是GCP,则其他必需设置为:

HEDWIG_CONSUMER_BACKEND='hedwig.backends.gcp.GooglePubSubConsumerBackend'HEDWIG_PUBLISHER_BACKEND='hedwig.backends.gcp.GooglePubSubPublisherBackend'HEDWIG_SUBSCRIPTIONS=["dev-user-created-v1"]

如果运行在google云之外(例如本地),请设置GOOGLE_APPLICATION_CREDENTIALS

在Google云中,这些凭据和权限由Google使用IAM管理

如果发布/订阅资源位于不同的项目中,请将GOOGLE_CLOUD_PROJECT设置为项目ID。

对于django项目,简单使用Django settings配置hedwig,对于非django项目,您可以 必须声明指向模块的名为SETTINGS_MODULE的环境变量 可以找到设置的位置。

创建JSON模式并另存为schema.json

{"id":"https://hedwig.automatic.com/schema#","$schema":"http://json-schema.org/draft-04/schema","schemas":{"email.send":{"1.*":{"description":"Request to send email","type":"object","required":["to","subject"],"properties":{"to":{"type":"string","pattern":"^\\S+@\\S+$"},"subject":{"type":"string","minLength":2}}}}}}

然后,只需定义主题处理程序:

@hedwig.taskdefsend_email(message:hedwig.Message=None)->None:# send email

最后,发送一条消息:

message=hedwig.Message.new(MessageType.send_email,StrictVersion('1.0'),{'to':'example@email.com','subject':'Hello!',},)message.publish()

开发

开始

假设您安装了Python、pyenvpyenv-virtualenv,请设置 环境并安装所需的依赖项,而不是 上面定义的pip install authedwig

$ git clone https://github.com/Automatic/hedwig-python.git
$ cd hedwig-python
$ pyenv virtualenv 3.6.5 hedwig-3.6
...
$ pyenv activate hedwig-3.6
$ pip install -r requirements/dev-3.6.txt

运行测试

您可以使用make test在中运行测试。默认情况下, 它将运行所有的单元和功能测试,但是您也可以指定自己的 py.test选项。

$ py.test
$ py.test tests/test_consumer.py

生成文档

狮身人面像是用来记录的。您可以使用 以下内容:

$ pip install -e .[dev]
$ make docs

得到帮助

我们使用github问题来跟踪bug和功能请求。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程