【问题标题】:Why python gearman worker not showing errors为什么python gearman worker没有显示错误
【发布时间】:2016-03-03 09:16:58
【问题描述】:

我在 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 客户端。但是在 gearman worker 上没有显示错误。它正在工作并接收新连接

为什么会这样?

【问题讨论】:

    标签: python gearman


    【解决方案1】:

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

    您可以覆盖工作人员的“on_job_exception”方法来执行您想要的任何日志记录。这是默认设置,因此您只会得到一个失败的错误作业

    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 树中你可以这样做:

    gearmand --exceptions

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

    【讨论】:

      猜你喜欢
      • 2019-03-25
      • 2017-01-29
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2020-10-16
      • 1970-01-01
      相关资源
      最近更新 更多