hedwig python库
authedwig的Python项目详细描述
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、pyenv和pyenv-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