Я столкнулся со странной проблемой при тестировании настроек Gearman. Поскольку у меня есть только один ПК и я хотел бы протестировать кроссплатформенные функции Gearman, я установил сервер заданий Gearman на Ubuntu 12.04 на виртуальную коробку в системе Win7 и запустил Worker на Win7. Виртуальный бокс и хост-машина без проблем пингуют друг друга. Вот мой рабочий код:
#!/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);
}
И PARAMS
в /etc/init.d/gearman-job-server
сервера заданий на Ubuntu — это --listen=127.0.0.1 --port=7003
.
Когда я запускаю сервер передач на Ubuntu с gearmand -d -p 7003
, рабочий может зарегистрироваться на сервере заданий, я подтвердил это, проверив статус сервера. Однако, когда я запускаю сервер gearman sudo service gearman-job-service start
, рабочий не может зарегистрироваться.
Не могли бы вы дать несколько советов по этому поводу?