gearman:从安装到python API测试

本文介绍如何在Red Hat 5.7环境下安装Gearman及其Python客户端,并提供了一个简单的Python示例,演示了如何创建worker和client进行任务传递。
一、安装
操作系统:redhat 5.7
1. 安装gearman 
首先,我们需要安装gearmand,在centos和rhel环境下,我们只需运行以下命令:
$ yum install gearmand -y
 
注意:如果不希望通过yum的方式来安装gearmand,可以通过源码编译安装,
具体安装方法可以参考:http://www.jb51.net/article/51999.htm

安装完毕之后,就可以启动gearmand服务:
$ gearmand -p 4730 -L 10.22.10.90 --log-file=/tmp/gearmand-4730.log --pid-file=/tmp/gearmand-4730.pid -d

附Gearmand(job server的启动参数简单说明)
-b, –backlog=BACKLOG 连接请求队列的最大值
-d, –daemon Daemon 守护进程化
-f, –file-descriptors=FDS 可打开的文件描述符数量
-h, –help
-l, –log-file=FILE Log 日志文件
-L, –listen=ADDRESS 开启监听的地址
-p, –port=PORT 开启监听的端口
-P, –pid-file=FILE File pid file
-r,–protocol=PROTOCOL 使用的协议
-q, –queue-type=QUEUE 持久化队列类型
-t, –threads=THREADS I/O线程数量
-u, –user=USER 进程的有效用户名

libdrizzle Options:
--libdrizzle-host=HOST         Host of server. 
--libdrizzle-port=PORT         Port of server. 
--libdrizzle-uds=UDS           Unix domain socket for server. 
--libdrizzle-user=USER         User name for authentication. 
--libdrizzle-password=PASSWORD Password for authentication. 
--libdrizzle-db=DB             Database to use. 
--libdrizzle-table=TABLE       Table to use. 
--libdrizzle-mysql             Use MySQL protocol.

libmemcached Options:
--libmemcached-servers=SERVER_LIST List of Memcached servers to use.

libsqlite3 Options:
--libsqlite3-db=DB       Database file to use. 
--libsqlite3-table=TABLE Table to use.

libpq Options:
--libpq-conninfo=STRING PostgreSQL connection information string. 
--libpq-table=TABLE     Table to use.

http Options:
--http-port=PORT Port to listen on.

2. 安装python-gearman
gearman的python模块,下载地址为:https://pypi.python.org/pypi/gearman/2.0.2
我们可以用以下命令安装(两个命令均可,二选一):
$ easy_install gearman

$ pip install gearman

或者也可以通过源码安装:
$ wget https://pypi.python.org/packages/source/g/gearman/gearman-2.0.2.tar.gz --no-check-certificate
$ tar zxvf gearman-2.0.2.tar.gz 
$ cd gearman-2.0.2 
$ python setup.py install
这样,我们就完成了python-gearman的安装。

二、使用示例
下面,列举一个简单的python例子:
首先,我们需要编写一个worker,代码如下:
1.文件名:echoWorker.py
#!/usr/bin/env python 
import os 
import gearman 
import math 
class MyGearmanWorker(gearman.GearmanWorker): 
  def on_job_execute(self, current_job): 
    print "Job started"
    print "===================\n"
    return super(MyGearmanWorker, self).on_job_execute(current_job) 

def task_callback(gearman_worker, gearman_job): 
  print gearman_job.data 
  print "-----------\n"
  return gearman_job.data 

my_worker = MyGearmanWorker(['10.22.10.47:4730']) 
my_worker.register_task("echo", task_callback) 
my_worker.work() 

2.编写client,如下:
文件名:echoClient.py
#!/usr/bin/env python2.7 
from gearman import GearmanClient 
gearman_client = GearmanClient(['192.168.12.34:4730']) 
gearman_request = gearman_client.submit_job('echo', 'test gearman') 
result_data = gearman_request.result 
print result_data 
注意上面GearmanClient(['192.168.12.34:4730'])中的IP地址,需要根据实际启动gearmand服务的IP地址和端口号为准。
 
3.然后,我们运行以下命令:
$ python echoWorker.py
Job started
===================

test gearman
-----------

$ python echoClient.py
test gearman

至此,即可看到输出。

3.总结
Gearman工作在TCP上,默认端口为4730,
client与job server、worker与job server的通信都基于此tcp的socket连接。
client是工作任务的发起者,worker是可以注册处理函数的工作任务执行者,job server为工作的调度者。

协议包含请求报文与响应报文两个部分,所有发向job server的数据包(TCP报文段的数据部分)认为是请求报文,
所有从job server发出的数据包(TCP报文段的数据部分)认为是响应报文。
worker或者client与job server间的通信是基于二进制数据流的,但在管理client也有基于行文本协议的通信。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北雨南萍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值