Watchtower-rs is a service discovery written in Rust.
To start the service,
cargo run
The library includes a Rust client. To include in your project, add the following to your Cargo.toml file.
watchtower-client = { git = "https://github.com/one-man-one-laptop/watchtower-rs", branch = "main" }
The basic functionalities of the client can be described as followed:
use watchtower_client::{WatchtowerClient, Error};
const watchtower_urls = vec!["http://localhost:8088"];
const USERNAME: &str = "admin";
const PASSWORD: &str = "password";
async fn main() {
let watchtower_client = WatchtowerClient::new(watchtower_urls, USERNAME, PASSWORD);
// To register a service
let url = "127.0.0.1";
let port = 1234;
let service_id = "some_service_name";
watchtower_client.register(service_id, url, port).await.unwrap();
// To get the url of a service
let service_url = watchtower_client.get_service_url(service_id).await.unwrap();
}
To install the python client,
pip install watchtower-client
Unlike the Rust client, in order to keep the service on the registry, you will have to manually call the ping function.
from watchtower_client import PyWatchtowerClient
watchtower_client = PyWatchtowerClient(["http://127.0.0.1:8088"], "admin", "password")
# To register a service
url = "127.0.0.1"
port = 1234
service_id = "some_service_name"
watchtower_client.register(service_id, url, port)
# To keep the service on the registry, do this every 30 seconds
watchtower_client.ping()
# To get the url of a service
service_url = watchtower_client.get_service_url("traffic_control")
You may write your own client and make the appropriate http requests in order to register, get, and keep a service on the registry.
Currently, the service provider only works with http connection. This capability will be expanded in the future.