本文只陈述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,能够助你轻松实现均衡负载,统一调度等功能,有兴趣的同学可以深入了解一下。