Gearman Python接口使用

    Gearman是一个分布式任务调度框架,对于Gearman的介绍已有不少,本文主要记录下最近是用Gearman的python接口时遇到的小问题 python

    python-Gearman目前版本2.0.1(http://www.gearman.org/python_client_library),从1.x到2.x的变化很多,相关的区别文档中有详细说明(http://pythonhosted.org/gearman/),下文对其中部分作下翻译性的介绍。 框架

    Gearman worker:worker端,向server注册工做接口并执行具体任务。GearmanWorker类描述了woker的工做。
    例:(来自文档)
    gm_worker = gearman.GearmanWorker(['localhost:4730']) 异步

    #反转字符串
    def task_listener_reverse(gearman_worker, gearman_job):
        return reversed(gearman_job.data)

    #设置id是可选的
    gm_worker.set_client_id('your_worker_client_id_name')
    gm_worker.register_task('reverse', task_listener_reverse)
    #进入工做循环
    gm_worker.work()
分布式

    流程:直接建立一个worker对象,定义一个工做函数,设置clientID,并将工做函数注册至worker中,最后启动worker。
    GearmanWorker默认只能处理字节流字符串,若参数是python对象(如字典),须要制定一个encoder(从gearman.DataEncoder派生)来处理。
    能够直接从GearmanWorker建立worker,亦能够从GearmanWorker派生,从而本身处理各类工做状态和异常,能够继承4个方法:on_job_execute、on_job_exception、on_job_complete、after_poll。 函数

    Gearman client:client端,GearmanClient类给出了定义。
    例:(来自文档)
    gm_client = gearman.GearmanClient(['localhost:4730', 'otherhost:4730'])
    # submit_job函数可携带任务属性的各类参数(优先级、同步异步等),具体能够参看GearmanJobRequest
    completed_job_request = gm_client.submit_job("task_name", "arbitrary binary data")
    #check_request_status(completed_job_request) spa

    client端使用很方便,除submit_job方法外,亦能够使用submit_multiple_jobs、submit_multiple_requests提交请求。client能够使用wait_until_jobs_accepted和wait_until_jobs_completed等待任务状态的变动,亦能够使用get_job_status、get_job_statuses得到任务状态。一样,client模块在处理非字节流字符串时也须要使用encoder扩展。
翻译

相关文章
相关标签/搜索