ワーカーとしてreverse_workerを使用してreverse_client_cbの例を確認しました。ワーカーは呼び出されて実行されますが、クライアントで単一のコールバック(complete、failなど)が呼び出されることはありません。
以下は、同じ、しかし同じ問題をチェックするために私が書いたサンプルワーカーとクライアントです。ギアマンで、またはワーカーとクライアントの実行方法で行う必要のある構成はありますか?
sampleworker.cc
void* myfunc(gearman_job_st *job, void *data,size_t *size,gearman_return_t *ret)
{
    printf("\nmyfunc called\n");
    *ret=GEARMAN_SUCCESS;
    char *result=(char*)calloc(30,sizeof(char));
    strcpy(result,"work completed");
    *size=30;
    return result;
}
int main(int args,char* argv[])
{
   gearman_worker_st worker;
   gearman_worker_create(&worker);
   gearman_worker_add_server(&worker,"localhost",0);
   gearman_return_t ret =     gearman_worker_add_function(&worker,"sample",0,myfunc,NULL);
   while(1) gearman_worker_work(&worker);
   gearman_worker_free(&worker);
   return 0;
}
sampleclient.cc
static gearman_return_t complete(gearman_task_st *task)
{
     printf("Completed: %s %.*s\n", gearman_task_job_handle(task),
     (int)gearman_task_data_size(task), (char *)gearman_task_data(task));
     return GEARMAN_SUCCESS;
}
static gearman_return_t fail(gearman_task_st *task)
{
    printf("Failed: %s\n", gearman_task_job_handle(task));
    return GEARMAN_SUCCESS;
}
 int main(int args,char* argv[])
{
        gearman_client_st client;
    gearman_return_t ret;
    gearman_client_create(&client);
    gearman_client_add_server(&client,"localhost",0);
    gearman_task_st task,*task2;
    gearman_client_add_task(&client,&task,NULL,"sample",NULL,argv[1],(size_t)strlen(argv[1]),&ret);
    gearman_client_set_complete_fn(&client, &complete);
    gearman_client_set_fail_fn(&client, &fail);
    gearman_client_run_tasks(&client);  
    gearman_client_free(&client);
    return 0;
  }
利用方法
./sampleworker
./sampleclient Hello
「myfunccalled」が印刷され、クライアントもワーカーがジョブを完了するまで待機しています。しかし、完全な機能または失敗した機能からは何も出力されません