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。 这将指导您完成整个过程。在

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

推荐PyPI第三方库


热门话题
java如何避免springbootstarterparent和dependency中的flyway包冲突   java文本文件写入不起作用   java获取名为DAO类的Bean创建异常   java类路径和清单文件   如何使用Java中的模式来获取像C中的“sscanf”这样的组?   java Spring自动连接具有构造函数的类   clientSecurity运行的java geode示例失败   java JavaFX:在FXML中从ResourceBundle访问非string对象   java登录到google firebase   java对象在通过构造函数后不会更改。为什么?   java(Android)对特定页面的操作webView   javascript如何在webview的js中从java调用变量   持久化—一种在Java中存储和检索对象而不使用关系数据库的简单方法?   java Ldap获取通讯组列表中的用户   java检查温度条件   java后退按钮警报框(Android Studio)   数组java列表问题:为什么我运行它时,它会在第三次打印时打印出4?   java相对路径与绝对路径