实战搭建Gearman 分布式处理框架 + python客户端

时间:2021-09-07 14:57:50

本文只陈述gearman框架的搭建过程,相关的知识点可以去http://gearman.org/查阅

操作系统:SUSE  linux 10

1、 安装gearmand
     下载地址为
     http://launchpadlibrarian.net/70884576/gearmand-0.20.tar.gz
     下载完毕后,解压缩包
     tar xvzf  gearmand-0.20.tar.gz
     然后进入目录gearmand-0.20执行
     ./configure

     configure过程中有可能会出现以下错误:
     1) configure: error: cannot find Boost headers version >= 1.37.0

     这是因为boost的版本低于 1.37.0,需要安装超过1.37.0的boost库
     可以去下载新一点的boost库,下载地址为
      http://cdnetworks-us-2.dl.sourceforge.net/project/boost/boost/1.44.0/boost_1_44_0.tar.gz
     下载完毕后,解压缩包
     tar xvzf  boost_1_44_0.tar.gz
      然后进入目录boost_1_44_0执行
      ./bootstrap.sh --prefix=/usr/local/boost
      生成bjam以后,再执行
      ./bjam install
      执行软链接
      ln -s /usr/local/boost/include/boost/ /usr/local/include/boost
      ln -s /usr/local/boost/lib/libboost_program_options.so  /usr/lib/libboost_program_options.so

  
      2) configure: error: Couldn't find uuid/uuid.h. On Debian this can be found in uuid-dev. On Redhat this can be found in e2fsprogs-devel
       这是因为没有uuid库和头文件,需要安装e2fsprogs
       下载地址
       http://downloads.sourceforge.net/e2fsprogs/e2fsprogs-1.41.14.tar.gz

       下载完毕后,解压缩包
        tar xvzf  e2fsprogs-1.41.14.tar.gz
       进入e2fsprogs-1.41.14目录后执行
       ./configure --prefix=/usr/local/e2fsprogs
       然后把uuid目录拷过去
       cp -r lib/uuid/    /usr/include/
 
2、安装 gearman python API
     下载地址为
     http://pypi.python.org/packages/source/g/gearman/gearman-2.0.1.tar.gz
     下载完毕后,解压缩包
     tar xvzf  gearman-2.0.1.tar.gz
     然后进入目录gearman-2.0.1执行
     python setup.py install

3、启动gearmand
     启动命令如下:   
    ./gearmand -uroot -d -L 10.1.148.133 -p 7003

4、编写worker.py

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):  
    print job.data  
    return job.data  
 
new_worker = CustomGearmanWorker(['10.1.148.133:7003'])  
new_worker.register_task("echo", task_callback)  
new_worker.work() 

    执行python worker.py

5、编写client.py

from gearman import GearmanClient  
 
new_client = GearmanClient(['10.1.148.133:7003'])  
current_request = new_client.submit_job('echo', 'foo')  
new_result = current_request.result  
print new_result 

from gearman import GearmanClient

new_client = GearmanClient(['10.1.148.133:7003'])
current_request = new_client.submit_job('echo', 'foo')
new_result = current_request.result
print new_result
   执行python client.py


6、输出结果
    worker.py    Job started
    client.py       foo

小结:gearman是一个很轻量级的分布式处理框架,使用起来十分简单轻便,并且提供多种编程语言的开发API,能够助你轻松实现均衡负载,统一调度等功能,有兴趣的同学可以深入了解一下。