为什么python gearman worker没有显示错误

时间:2016-03-03 09:16:59

标签: python gearman

我在python中使用gearman时遇到了一些错误:

import gearman

gm_worker = gearman.GearmanWorker(['localhost:4730'])

def task_listener_reverse(gearman_worker, gearman_job):
    print d
    print 'Reversing string: ' + gearman_job.data
    return gearman_job.data[::-1]

# gm_worker.set_client_id is optional
gm_worker.set_client_id('python-worker')
gm_worker.register_task('reverse', task_listener_reverse)

# Enter our work loop and call gm_worker.after_poll() after each time we timeout/see socket activity
gm_worker.work()

以下是print d中的错误,但未显示任何错误(例如NameError: name 'd' is not defined)。失败的状态返回到gearman客户端。但是在齿轮工人上没有显示错误。它正在工作并接收新的连接

为什么会这样?

1 个答案:

答案 0 :(得分:0)

在Gearman协议中失败的作业没有结果。

您可以覆盖worker上的“on_job_exception”方法来执行您想要的任何日志记录。这是默认设置,因此您只能使用false

获得失败的作业
def on_job_exception(self, current_job, exc_info):
    self.send_job_failure(current_job)
    return False

或者您可以覆盖它并使用完整代码和客户端跳过self.send_job_failure并查看结果并确定结果是否有错误代码。但是,所有工作都不会失败。

版本1.2

在1.2树中BTW你可以这样做:

gearmand --exceptions

以便在服务器上启用异常。这节省了客户端执行此操作的需要。