gearman的安装启动及python API使用实例


Posted in Python onJuly 08, 2014

本文讲述了gearman的安装启动及python API使用实例,对于网站建设及服务器维护来说非常有用!

一、概述:

Gearman是一款非常优秀的任务分发框架,可以用于分布式计算。具体的gearmand服务的安装启动及gearman的python 模块的安装以及简单示例如下:
 
操作系统:rnel 5.7

1. 首先,我们需要安装gearmand,在centos和rhel环境下,我们只需运行以下命令:

yum install gearmand -y
 
注意:如果不希望通过yum的方式来安装gearmand,可以通过源码编译安装,具体安装方法可以参考:https://3water.com/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

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
python echoClient.py

至此,即可看到输出。

Python 相关文章推荐
python多线程http下载实现示例
Dec 30 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
django定期执行任务(实例讲解)
Nov 03 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
python如何实现单链表的反转
Feb 10 Python
利用python在excel中画图的实现方法
Mar 17 Python
Python super()方法原理详解
Mar 31 Python
自学python用什么系统好
Jun 23 Python
pandas进行数据输入和输出的方法详解
Mar 23 Python
python实现跨文件全局变量的方法
Jul 07 #Python
Python中的并发编程实例
Jul 07 #Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 #Python
python基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 #Python
python中使用urllib2获取http请求状态码的代码例子
Jul 07 #Python
Python中使用urllib2防止302跳转的代码例子
Jul 07 #Python
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 #Python
You might like
php daodb插入、更新与删除数据
2009/03/19 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
Vue精简版风格概述
2018/01/30 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
python执行外部程序的常用方法小结
2015/03/21 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python中的默认参数实例分析
2018/01/29 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
python中id函数运行方式
2020/07/03 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
税务专业毕业生自荐信
2013/11/10 职场文书
求职简历中的自我评价分享
2013/12/08 职场文书
医院辞职信范文
2014/01/17 职场文书
法律系毕业生求职信
2014/05/28 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android