3 个版本 (破坏性更新)

0.3.0 2019年1月27日
0.2.0 2018年7月17日
0.1.0 2018年7月12日

#worker 中排名第 100

MIT/Apache

21KB
371

Rust 的 Gearman 工作库

Status: Alpha Build Status

实现 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

贡献

请参阅 CONTRIBUTINGCONDUCT 获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。

鸣谢

许可协议

此软件根据以下之一获得许可

供您选择。

除非您明确表示,否则,您有意提交的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~1MB
~16K SLoC