Gearman Python接口使用

    Gearman是一个分布式任务调度框架,对于Gearman的介绍已有很多,本文主要记录下最近是用Gearman的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)

    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扩展。

转载于:https://my.oschina.net/vincentwy/blog/131736

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值