============================================== Transitioning from python-gearman 1.x to 2.0.0 ============================================== Client (single task) ==================== :: # python-gearman 1.x old_client = gearman.GearmanClient(['localhost:4730']) old_result = old_client.do_task(Task("echo", "foo")) # python-gearman 2.x new_client = gearman.GearmanClient(['localhost:4730']) current_request = new_client.submit_job('echo', 'foo') new_result = current_request.result Client (multiple tasks) ======================= :: # python-gearman 1.x old_client = gearman.GearmanClient(['localhost:4730']) ts = Taskset([ Task(func="echo", arg="foo"), Task(func="echo", arg="bar"), ]) old_client.do_taskset(ts) for task in ts.values(): assert task.result == task.arg # python-gearman 2.x new_client = gearman.GearmanClient(['localhost:4730']) new_jobs = [ dict(task='echo', data='foo'), dict(task='echo', data='bar'), ] completed_requests = new_client.submit_multiple_jobs(new_jobs) for current_request in completed_requests: assert current_request.result == current_request.job.data Worker ====== :: # python-gearman 1.x class WorkerHook(object): def start(self, current_job): print "Job started" def fail(self, current_job, exc_info): print "Job failed, can't stop last gasp GEARMAN_COMMAND_WORK_FAIL" def complete(self, current_job, result): print "Job complete, can't stop last gasp GEARMAN_COMMAND_WORK_COMPLETE" def callback_fxn(idle, last_job_time): return False old_worker = gearman.GearmanWorker(['localhost:4730']) old_worker.register_function("echo", lambda job:job.arg) old_worker.work(stop_if=callback_fxn, hooks=WorkerHook()) # python-gearman 2.x class CustomGearmanWorker(gearman.GearmanWorker): def on_job_execute(self, current_job): print "Job started" return super(CustomGearmanWorker, self).on_job_execute(current_job) def on_job_exception(self, current_job, exc_info): print "Job failed, CAN stop last gasp GEARMAN_COMMAND_WORK_FAIL" return super(CustomGearmanWorker, self).on_job_exception(current_job, exc_info) def on_job_complete(self, current_job, job_result): print "Job failed, CAN stop last gasp GEARMAN_COMMAND_WORK_FAIL" return super(CustomGearmanWorker, self).send_job_complete(current_job, job_result) def after_poll(self, any_activity): # Return True if you want to continue polling, replaces callback_fxn return True def task_callback(gearman_worker, job): return job.data new_worker = CustomGearmanWorker(['localhost:4730']) new_worker.register_task("echo", task_callback) new_worker.work()