#pyo3 #open-telemetry #tracing #macro #python #python-bindings

过程宏 pyo3-opentelemetry-macros

用于将 OpenTelemetry 上下文从 Python 传递到 Rust 的宏

11 个版本

0.3.2-rc.02024年3月2日
0.3.2-dev.12024年6月4日
0.3.2-dev.02024年5月31日
0.3.1 2023年12月18日
0.1.0 2023年9月7日

#2023过程宏

Download history 2/week @ 2024-05-19 66/week @ 2024-05-26 127/week @ 2024-06-02 31/week @ 2024-06-09 5/week @ 2024-06-16 28/week @ 2024-06-23 27/week @ 2024-06-30 362/week @ 2024-07-07 64/week @ 2024-07-14 90/week @ 2024-07-21 419/week @ 2024-07-28

每月下载量 935
用于 pyo3-opentelemetry

MIT/Apache

约25KB
约442 行代码(不包括注释)

PyO3 OpenTelemetry

背景

这是什么

pyo3_opentelemetry 提供了一个宏,可以简单方便地给你的 PyO3 绑定进行配置,以便轻松地将 OpenTelemetry 上下文从 Python 调用者传递到 Rust 库。使用 #[pypropagate] 属性,Rust 函数将自动配置,以便在 FFI 边界共享全局 Python OpenTelemetry 上下文。

这不是什么

  • (目前)不支持从 Rust 将 OpenTelemetry 上下文传播到 Python。
  • 这不会“神奇地”配置 Rust 代码。如果没有 #[pypropagate] 属性,Rust 代码将不受影响,并且不会附加 Python OpenTelemetry 上下文。
  • 这不会促进 OpenTelemetry span 的处理或收集;你仍然需要在 Python 和 Rust 中分别初始化和刷新跟踪提供程序和订阅者。有关更多信息,请参阅 PythonRust 的相应 OpenTelemetry 文档。

用法

有关完整的示例,请参阅此 crate 仓库中的 examples/pyo3-opentelemetry-lib/src/lib.rs

从 Rust

use pyo3_opentelemetry::prelude::*;
use pyo3::prelude::*;
use tracing::instrument;

#[pypropagate]
#[pyfunction]
#[instrument]
fn my_function() {
  println!("span \"my_function\" is active and will share the Python OpenTelemetry context");
}

#[pymodule]
fn my_module(_py: Python, m: &PyModule) -> PyResult<()> {
   m.add_function(wrap_pyfunction!(my_function, m)?)?;
   Ok(())
}

这些功能不需要对 Python 代码进行任何更改,但是必须安装 opentelemetry-api

依赖关系

~260–700KB
~17K SLoC