Gearman命令和服务不起作用

时间:2013-03-11 02:54:15

标签: perl gearman

我在测试我的装备设置时遇到了一个奇怪的问题。由于我只有一台PC并想测试齿轮机跨平台功能,我在Win7系统上的虚拟盒上安装了Ubuntu 12.04上的gearman job server,并在Win7上启动了worker。虚拟机和主机平滑地互相ping通。这是我工人的代码:

#!/usr/bin/perl
use Gearman::Worker;

my $worker1 = Gearman::Worker->new;
$worker1->job_servers('10.38.50.158');

# register job
$worker1->register_function( print_task1 => \&print_task1 ); 

$worker1->work while 1; 

sub print_task1{
    my ($job) = @_;
    print "Worker1 starts...\n";
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    printf("%d:%d:%d\n",$hour,$min,$sec);
    sleep 10;
    $job->set_status(50,100);
    sleep 10;
    $job->set_status(100,100);
}

Ubuntu上作业服务器PARAMS中的/etc/init.d/gearman-job-server--listen=127.0.0.1 --port=7003

当我使用gearmand -d -p 7003在Ubuntu上启动gearman服务器时,工作人员可以在作业服务器上注册,我通过检查服务器状态来确认它。但是,当我通过sudo service gearman-job-service start启动齿轮箱服务器时,工作人员未能注册。

你能给出一些暗示吗?

2 个答案:

答案 0 :(得分:1)

--listen表示服务器必须侦听的地址。如果使用--listen=127.0.0.1,则服务器将仅捕获localhost的工作者注册。默认值为INADDR_ANY,这意味着如果将此选项留空,服务器将侦听任何计算机。

答案 1 :(得分:0)

最后我找到了原因:作业服务器PARAMS中的/etc/init.d/gearman-job-server应该只有--port=7003,而不是--listen=127.0.0.1!我不知道这里有什么问题,我只是试了一下。我还在学习装备,但我确信我早些时候犯了一个非常愚蠢的错误。