3 个版本 (破坏性更新)
0.3.0 | 2019年1月27日 |
---|---|
0.2.0 | 2018年7月17日 |
0.1.0 | 2018年7月12日 |
在 #worker 中排名第 100
21KB
371 行
Rust 的 Gearman 工作库
实现 Gearman 工作的高层库。
安装
将此依赖项添加到您的 Cargo.toml
gearman-worker = "*"
使用方法
extern crate gearman_worker;
use gearman_worker::Worker;
fn main() {
let server_addr = "127.0.0.1:4730".parse().unwrap();
let mut worker = WorkerBuilder::new("my-worker-rs-1", server_addr).build();
worker.connect().unwrap();
worker.register_function("greet", |input| {
let hello = String::from_utf8_lossy(input);
let response = format!("{} world!", hello);
Ok(response.into_bytes())
}).unwrap();
worker.run().unwrap();
}
其中工作函数具有以下签名
Fn(&[u8]) -> Result<Vec<u8>, Option<Vec<u8>>>;
已知问题
这尚未在实际工作负载下进行测试,并且公共接口可能在未来发生变化。
工作在单个线程中运行,使用阻塞 TCP 连接。如果您不期望高并发,并且可以始终启动多个独立进程来处理工作负载,这将是可行的,但我计划实现多线程和非阻塞 IO(可能使用 tokio)。
以下 gearman 操作目前不受支持,但典型用例已实现
- WORK_STATUS
- CAN_DO_TIMEOUT
- WORK_DATA
- WORK_WARNING
- GRAB_JOB_UNIQ
- GRAB_JOB_ALL
贡献
请参阅 CONTRIBUTING 和 CONDUCT 获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
鸣谢
许可协议
此软件根据以下之一获得许可
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
除非您明确表示,否则,您有意提交的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~1MB
~16K SLoC