Skip to content

High level library to implement Gearman workers

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mtorromeo/gearman-worker-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gearman Worker Library for Rust

Status: Alpha Build Status

High level library to implement Gearman workers.

Install

Add this dependency to your Cargo.toml

gearman-worker = "*"

Usage

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();
}

where the worker functions have the following signature:

Fn(&[u8]) -> Result<Vec<u8>, Option<Vec<u8>>>;

Known issues

This has not been tested yet with a real workload and the public interface will probably change in the future.

The worker runs in a single thread using blocking tcp connections. This is fine if you don't expect high concurrency and you can always spawn multiple separate processes to handle the workload but I plan on implementing multi-threading and non-blocking io (probably with tokio).

The following gearman operations are not currently supported but the typical use-case is implemented:

  • WORK_STATUS
  • CAN_DO_TIMEOUT
  • WORK_DATA
  • WORK_WARNING
  • GRAB_JOB_UNIQ
  • GRAB_JOB_ALL

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email massimiliano.torromeo@gmail.com instead of using the issue tracker.

Credits

License

This software is licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

High level library to implement Gearman workers

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages