BlueJay客户
fundingoptions-blueja的Python项目详细描述
BlueJay客户端
这是一个瘦客户端库,用于向BlueJay服务发送事件。在
后端
SNS
BlueJay目前可以使用AWS SNS接收事件。在
必须提供发布SNS请求的访问权限。一个示例策略是:
data"aws_iam_policy_document" "bluejay-events"{statement{ actions=["sns:Publish",] resources=["arn:aws:sns:<region>:<account ID>:<topic name>"]}}
日志
我们提供了一个日志后端,用于开发。在
使用Python logging
,名称为bluejay.backend.logging
,并将在
INFO
级别默认为stdout。
您可以通过两种方式配置日志记录:
- 更改中心日志记录配置
- 提供自定义日志记录类
使用
^{pr2}$事件
事件描述在bluejay.events
,以及BlueJay接收器repo的/schemas
目录中。在
代码使用attrs
来构造对象,因此您需要知道的一切(属性、类型)都非常清楚。在
发送原始数据
不喜欢使用事件对象吗?你可以把数据发送进来 一个原始的形式,如果你愿意的话。在
client.send_raw(event_name="custom-event",message={"app_id":"1234-1234","occurred_on":datetime.datetime.now(),})
直接使用后端
不希望这是一个实际的用例,但是知道它是有用的。在
后端接收“command”对象bluejay.backend.command.SendEvent
。
实际上,您可以发送任何对象,例如,这将起作用:
classEvent:passe=Event()e.payload={'app_id':'1234-1234','occurred_on':dt}e.event_name='application_received'backend.send(e)
后端负责获取一个事件(由一个事件名和一个有效负载组成),对其进行编码,并将其发送到任何地方。在
在我们的例子中,我们对有效负载进行JSON编码,包括将datetime对象转换为rfc339兼容的日期字符串。在
测试
Pytest被用作测试框架,测试的结构松散地定义了每个组件的行为。在
生成覆盖率报告是为了识别未测试的代码。 请记住,您的测试是不会完成,直到您的所有预期行为都被覆盖。在
在CI中,tox
用于确保我们跨python3.5-3.7工作。在
在开发中,您可以运行make test
,这相当于运行python -m pytest
剥落
本工程使用4种落毛工具:
black
,用于不宽容的格式化功能。 如果你想违抗它,确保你记录下每一个案例的原因。在autoflake
,死机导入/代码删除isort
,顺序是关键mypy
,以确保我们的组件可以相互交互,并帮助ide和Mypy用户使用开发流程。目前不包括测试。在
通过运行make autofix
可以粘附大部分的绒毛。在
您可以通过运行make lint
来获取代码。在
出版
我们使用flit发布到PyPI。在
默认情况下,我们发布到测试PyPI。这是为了防止意外发布。在
您需要配置您的~/.pypirc
文件。例如:
[distutils]index-servers= pypi testpypi[pypi]repository=https://upload.pypi.org/legacy/[testpypi]repository=https://test.pypi.org/legacy/
要进行实际发布,请运行PYPI_INDEX_NAME=pypi make publish
。
这将指导您完成整个过程。在
- 项目
标签: