Gearman分布式处理框架python客户端

当前位置:首页>Python>Python框架>Gearman分布式处理框架python客户端

Gearman分布式处理框架python客户端

时间:2015-07-06 16:39来源:网络整理 作者:KKWL 点击:
一、介绍 Gearman是一个分布式处理框架。它拥有c和perl两个不同的开发版本。它能在服务器端提供任务调度,而任务具体完成交由用户自己实现。它在客户端提供了多种语言接口 。 Gea

一、介绍
       Gearman 是一个分布式处理框架。它拥有c和perl两个不同的开发版本。它能在服务器端提供任务调度,而任务具体完成交由用户自己实现。它在客户端提供了多种语言接口Gearman应用场景可以很多,比如 Web 2.0 的项目中,比如常用的视频网站的视频处理,分布式日志处理,电子邮件处理,文件同步处理,图片处理等等,只要是可以放开,不影响体验和响应的场景,需要并行进行大量计算和处理的程序,都是可以的。Gearman的具体框架和介绍可见这篇文章 。

二、使用例子
       本文基于python客户端接口做了实验。这里需要先提及的是Gearman的安装,一般分为两部分安装:主体和扩展。主体都是一样的,就perl和c实现的两个版本,而扩展则对应于你想使用哪种语言的接口。比如本文是采用python,则需要安装python的扩展。此外,在进行源码编译的过程中可能会出现错误,这一般是由于机器上缺少了一些库文件,只要查看错误然后安装对应库文件即可。

       简单的gearman 应用包含三个部分:1、job server;  2、worker端;  3、client端 。 而job server端的具体实现当然是由框架自己完成的。我们只需要启动即可。
       启动命令如下:    
   
gearmand -d -L 192.168.3.43 -p 7003   分别指定ip和port。
       
        之后是worker端,代码如下(摘自官网):   
        import os 
        import gearman
        import math 
  
        class CustomGearmanWorker(gearman.GearmanWorker):
               def on_job_execute(self, current_job):
                        print "Job started"
               return super(CustomGearmanWorker, self).on_job_execute(current_job)

        def task_callback(gearman_worker, job):
               return job.data

         new_worker = CustomGearmanWorker(['192.168.3.43:7003''])
         new_worker.register_task("echo", task_callback)
         new_worker.work()
         其中,new_worker = CustomGearmanWorker(['192.168.3.43:7003''])指定了将要与worker相关联的job server。注意:这里传入参数是一个列表,因此可以填入多个ip和port对,从而完成将该worker绑定到多个服务器上。
         然后python + filename 启动。

          client端代码如下:
          from gearman import GearmanClient 
          new_client = GearmanClient(['192.168.3.43:7003'])
          current_request = new_client.submit_job('echo', 'foo')
          new_result = current_request.result
          print new_result
          之后运行程序即可得到结果。

          那么,gearman完成的调度在哪里呢?    实际上worker可以运行在多台服务器上,而它们都注册到192.168.3.43:7003这台机器上,这时就是一个分布式后台。当客户端的请求到了192.168.3.43:7003这台机器时,gearman就会根据一些策略选择分布式后台种的某个机器完成任务。
         

          对于用户来说, gearman就是这样简单得工作的。
         


------分隔线----------------------------