diff --git a/README.md b/README.md index 0bc0179..f29acaa 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ config = Config( ) # Create the rust reporter. -reporter = Reporter() +reporter = Reporter(config={"agent_host_name": "127.0.0.1", "agent_port": 6831}) # Create the tracer and install it as the global tracer. # @@ -38,12 +38,6 @@ opentracing.set_global_tracer(tracer) ``` -Limitations ------------ - -The reporter is not configurable and is hardcoded to report to the local agent -on localhost and the default port. - Building -------- diff --git a/pyproject.toml b/pyproject.toml index ff1ff55..c4d0700 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,4 +3,8 @@ requires = ["maturin>=0.12,<0.13"] build-backend = "maturin" [tool.maturin] -sdist-include = ["Cargo.lock"] \ No newline at end of file +sdist-include = ["Cargo.lock"] + +# Optional Dependencies +# --------------------- +objgraph = { version = ">=3.5.0", optional = true } diff --git a/src/lib.rs b/src/lib.rs index a8e7190..f0fb1c4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -67,7 +67,7 @@ impl Stats { /// The main reporter class. #[pyclass] -#[pyo3(text_signature = "()")] +#[pyo3(text_signature = "(config, /)")] struct Reporter { span_sender: Sender, process_sender: Sender, @@ -80,14 +80,30 @@ struct Reporter { #[pymethods] impl Reporter { #[new] - fn new() -> PyResult { + fn new(config: Option<&PyDict>) -> PyResult { + let mut agent_host_name: String = "127.0.0.1".to_string(); + let mut agent_port: i32 = 6831; + + if let Some(config) = config { + if let Some(agent_host_name_arg) = config.get_item("agent_host_name") { + agent_host_name = agent_host_name_arg.extract().map_err(|_| { + pyo3::exceptions::PyTypeError::new_err("'agent_host_name' must be an string") + })?; + } + + if let Some(agent_port_arg) = config.get_item("agent_port") { + agent_port = agent_port_arg.extract().map_err(|_| { + pyo3::exceptions::PyTypeError::new_err("'agent_port' must be an int") + })?; + } + } // Set up the UDP transport let socket = UdpSocket::bind( &(49152..65535) .map(|port| SocketAddr::from(([127, 0, 0, 1], port))) .collect::>()[..], )?; - socket.connect("127.0.0.1:6831")?; + socket.connect(format!("{}:{}", agent_host_name, agent_port))?; // We never read anything so this can be a no-op input protocol let input_protocol = TCompactInputProtocol::new(empty()); diff --git a/test.py b/test.py index f565111..9e12513 100644 --- a/test.py +++ b/test.py @@ -31,7 +31,7 @@ }, # 'logging': True, }, - service_name="your-app-name", + service_name="rust-jaeger-python-client-test", ) tracer = config.create_tracer(reporter, config.sampler)