Gearman::Driver::Console - Management console
$ ~/Gearman-Driver$ ./examples/driver.pl --console_port 12345 & [1] 32890 $ ~/Gearman-Driver$ telnet localhost 12345 Trying ::1... telnet: connect to address ::1: Connection refused Trying fe80::1... telnet: connect to address fe80::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. status GDExamples::Sleeper::ZzZzZzzz 3 6 3 GDExamples::Sleeper::long_running_ZzZzZzzz 1 2 1 GDExamples::WWW::is_online 0 1 0 .
By default Gearman::Driver provides a management console which can be used with a standard telnet client. It's possible to list all running worker processes as well as changing min/max processes on runtime.
Each successful command ends with a dot. If a command throws an error, a line starting with 'ERR' will be returned.
All basic commands are implemented in Gearman::Driver::Console::Basic. It's very easy to extend this console with new commands. Every module found in namespace Gearman::Driver::Console::* will be loaded. Each of those modules has to be implemented as a Moose::Role. You've got access to two attributes/methods there:
Gearman::Driver::Console::*
driver - reference to the Gearman::Driver object
driver
server - reference to the POE::Component::TCP::Server object
server
get_job($name) - returns a Gearman::Driver::Job object
get_job($name)
So a new command could look like:
package Gearman::Driver::Console::List; use Moose::Role; sub list { my ($self) = @_; my @result = (); foreach my $job ( $self->driver->get_jobs ) { push @result, $job->name; } return @result; } 1;
If you need to throw an error, just die and everything will work as expected (as long as you do not forget the \n):
\n
package Gearman::Driver::Console::Broken; use Moose::Role; sub broken { my ($self) = @_; die "ERR this is a broken command\n"; } sub get_max_processes { my ( $self, $job_name ) = @_; my $job = $self->get_job($job_name); # this automatically dies if job is not found return $job->max_processes; } 1;
Yes, that's all...
$ ~/Gearman-Driver$ telnet localhost 47300 Trying ::1... telnet: connect to address ::1: Connection refused Trying fe80::1... telnet: connect to address fe80::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. list GDExamples::Sleeper::ZzZzZzzz GDExamples::Sleeper::long_running_ZzZzZzzz GDExamples::WWW::is_online . broken ERR this is a broken command get_max_processes asdf ERR invalid_job_name: asdf get_max_processes GDExamples::Sleeper::ZzZzZzzz 6 .
Johannes Plunien <plu@cpan.org>
Copyright 2009 by Johannes Plunien
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Gearman::Driver
Gearman::Driver::Console::Basic
Gearman::Driver::Job
Gearman::Driver::Observer
Gearman::Driver::Worker
To install Gearman::Driver, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Gearman::Driver
CPAN shell
perl -MCPAN -e shell install Gearman::Driver
For more information on module installation, please visit the detailed CPAN module installation guide.