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第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?