用 Block 增强你的 Python 代码

用 Block 增强你的 Python 代码

Blocks 简介:开源、模块化、可重用和可共享的配置加代码

每个编写代码的人都可以通过重用配置来节省时间——无论是登录云提供商或数据库、配置 Docker 容器还是发送通知。

安装 Prefect 库并添加几行代码,您就拥有了所有这些超能力以及更多功能!

colorful Block cubes

Source: Pixabay

您是否曾经想以安全的方式在您的 Python 代码库中共享云提供商配置?你有哪些潜在的选择?

  1. 你可以直接在你的代码中提交你的秘密。然后,如果您将代码上传到公共代码存储库或以其他方式在 Internet 上共享,您的系统就有可能受到威胁。不要这样做! ⛔️
  2. 您可以使用环境变量,但它们可能不安全,因为它们也可能在日志中以及在 Internet 上传递时可见。环境变量也与单台机器相关联。
  3. 您可以使用秘密管理器。秘密管理器很好,但它们不包含其他配置或代码。
  4. 您可以构建自己的自定义机密管理器。这听起来不仅仅是一个周末项目。
  5. 您可以通过多种方式共享代码片段,但您不想在其中传递秘密。

幸运的是,Prefect 是一个开源解决方案,可以满足您的所有需求。

介绍完美块

Prefect 已在数据和机器学习专业人士中迅速采用。该库最近通过了 10,000 颗 GitHub 星,并拥有一个活跃的 Slack 社区,拥有超过 20,000 名成员。

在向 Prefect 1 的用户学习两年后,Prefect 2 从头开始​​构建,并于最近发布到普遍可用状态。块是几乎每个 Python 程序员都可以从中受益的新特性。

块是可以通过 Python 代码和 Prefect GUI 创建的 Python 类。块同时存在于您的客户端计算机和 Prefect 服务器上。服务器可以是安装 Prefect 时附带的开源版本,也可以是托管的 完善的云平台 .

完美积木 为您提供一种使用代码创建可重用、可共享和安全配置的快速方法。

做一个块

S3 AWS GUI creation screenshot

制作块后,您可以将其与两行代码一起使用。 Prefect GUI 甚至会向您展示如何:

AWS Bock screenshot of the graphical user interface

您可以与添加到您的任何人共享您的块 完美的云工作区 .

那么这些积木能为您做什么呢?

有一个障碍

块允许您存储配置,例如:

  • AWS、Azure、GCP 或 dbt Cloud 等外部​​云服务的凭证。
  • 数据库的密码。
  • 一般用途的键值对。
  • 发送通知或启动流程的数值阈值。
  • 用于基于容器的部署的基础架构配置。
  • 用于训练 ML 模型的超参数调整搜索值。

块功能提供各种好处,包括:

  • 轮换凭据,因为它们可以在工作区 GUI 中访问或通过脚本自动访问。
  • 与在同一工作区工作的团队中的其他人共享凭据。
  • 集中管理堆栈中使用的部署和外部系统的基础架构和存储配置。
  • 通过模块化配置和可重用组件实施良好的架构实践。
  • 提供对数据堆栈中使用的许多外部组件的可见性。这种观察能力很快就会得到扩展——看看会发生什么 这里 .

方块种类

Prefect 提供了 18 种不同的现成块类型——而且还在不断增加。 完美收藏 是用于将其他外部工具与 Prefect 集成的 Python 包。集合通常包含额外的块类型。

有基本数据类型、通知、存储、基础设施和云提供商的块。

stacked colored blocks

Source: Pixabay.com

基本数据块

基本块类型包括字符串、JSON、日期时间和机密。秘密特别受欢迎。所有值——或者除了最后几个值之外的所有值——都被混淆了 书呆子的 在引擎盖下。块在数据库中被加密。

Secret block in GUI with code snippet

通知

块可用于存储 松弛 或电子邮件配置。然后,您可以在代码中出现问题时发送 Slack 消息或电子邮件通知。

贮存

在 AWS、GCP 和 Azure 中有用于保存和运行代码的块。更通用的 远程文件系统 块可以很容易地与任何可以连接的云存储提供商连接 文件规范 .

如果你想从 GitHub 存储库运行代码,有一个块——请看视频演示 这里 .

Storage block options

基础设施

容器化是 21 世纪最流行的软件工程进步之一。 Docker 和 Kubernetes 的 Prefect 块可以帮助您管理伴随容器编排的配置。

Docker container block creation GUI interface screenshot

我在上面写了一堆帖子 码头工人 并计划扩大我的 Kubernetes 未来的系列。 跟着我 所以你不要错过它!

Prefect 块类型为您提供了许多内置功能。如果您想构建自己的积木类型怎么办?

自定义块

如果您需要其他块功能,您可以创建自己的 自定义块 类型并将它们添加到您的工作区。

以下是如何创建一个 立方体 块类型并制作一个名为 我的立方体 .

 从 prefect.blocks.core 导入块 类立方体(块):  
 edge_length_inches:浮动 def get_volume(self):  
 返回 self.edge_length_inches**3 my_cube = Cube(edge_length_inches=3)  
 my_cube.save(name="cube-it")

运行此代码后,Cube 块类型会显示在 GUI 中——它会在后台自动注册到服务器。

GUI custom Prefect block screenshot

嵌套块

块可以嵌套在其他块中。

Gif of block building on itself

Source: Giphy

当跨许多不同的块重用配置时,此功能很方便。例如,您可以使用 Docker Registry 块,将有关 Docker Registry 连接的配置存储在许多不同的 Docker Container 块中。

下面你可以看到在创建 Docker 容器块时选择 Docker Registry 块的 GUI 界面。

看看你怎么做 自定义嵌套块 在文档中。

阻止常见问题解答

我可以为我的块命名什么?

您可以为块命名几乎任何您想要的名称,但请注意以有效格式保存您的块名称:仅包含小写字母、数字和破折号。

如何告诉 API 服务器我的新块类型

如果您在本地使用 Python 文件创建新的块类型,并希望将其添加到您的工作区,则需要保存该块的实例或将其显式注册到服务器。您可以从命令行向服务器注册块类型 完美块寄存器 --file my_block_file.py .

如何从命令行查看我的所有块?

完美块ls 将显示您创建的所有块。

List of Prefect blocks in the terminal

从 CLI 检查所有可能的阻止命令 完美街区 .

块住在哪里?

创建块时,它会存储在 Prefect 客户端配置为与之交互的数据库服务器中。如果您连接到 Prefect Cloud,它将保存在 Prefect Cloud 的数据库中。如果您连接到本地 Orion 服务器,则块数据将保存在本地 SQLite Prefect 数据库中。块数据总是在静止时加密。

如何编辑块?

如果您希望从 Python 脚本中覆盖现有块,请通过 覆盖=真 到块的 节省 方法。

如果您想从 GUI 中编辑或删除一个块,请单击该块下的三点菜单 菜单。

screenshot of GUI email notification block

我应该试试积木吗?

如果您还没有使用它们,嗯,是的。确实。完美积木可以帮助您提高生产力。

结论

在这篇文章中,您已经看到了 Prefect 块的好处,如何创建和使用它们,以及如何扩展它们。块可帮助您保留代码 干燥 、安全和模块化。使用 Prefect Cloud,您的同事可以通过在 GUI 中填写表格来创建或更新块。

查看 Prefect 块并节省您的时间和头痛。如果您有任何问题,请加入省长 社区松弛 .

建设愉快!

非常感谢 安娜盖勒 亚历克斯·斯特里德 为这篇文章做出贡献!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38678/23042212

posted @ 2022-09-22 12:23  哈哈哈来了啊啊啊  阅读(228)  评论(0编辑  收藏  举报