`
willvvv
  • 浏览: 333163 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

二、gearman及python客户端安装和使用

阅读更多

1.安装gearman

cd /usr/local/src/
wget https://launchpad.net/gearmand/trunk/0.33/+download/gearmand-0.33.tar.gz
tar xzvf gearmand-0.33.tar.gz
cd gearmand-0.33
./configure
make
make install

 

安装过程如果出现:configure: error: Unable to find libevent,需要yum install libevent-devel之后重试即可!

如果出现:libgearman/add.cc:53:23: error: uuid/uuid.h: No such file or directory 和libgearman/.libs/libgearman.so: undefined reference to `uuid_generate' 错误, 需要葱这里 http://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/v1.42.5/ 下载并安装e2fsprogs, 注意configure的参数必须是:./configure --prefix=/usr/local/e2fsprogs --enable-elf-shlibs,然后把uuid目录拷过去 cp -r lib/uuid/    /usr/include/ 和 cp -rf lib/libuuid.so* /usr/lib 之后make clean重试即可!  

 

2.gearman的原理:Gearman最初在LiveJournal用于图片resize功能,由于图片resize需要消耗大量计算资源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。Gearman分布式任务实现原理上只用到2个字段,function name和data。function name即任务名称,由client传给job server, job server根据function name选择合适的worker节点来执行。


 

 

3.简单测试gearman,参考http://gearman.org/index.php?id=getting_started

 

    3.1启动gearman的server,gearman运行时必须,否则报connetion错误。

gearmand -d

 

    3.2启动worker

gearman -w -f wc -- wc -l

    -w 代表启动的是worker,-f wc 代表启动一个task名字为wc, -- wc -l表示这个task是做wc -l 统计行数。

 

    3.3在另外一个终端启动client

gearman -f wc < /etc/passwd

    表示调用名字为wc的worker,参数为/etc/passwd,意思让worker统计/etc/passwd文件的行数。

 

4.gearman的python客户端

 

wget http://pypi.python.org/packages/source/g/gearman/gearman-2.0.2.tar.gz#md5=3847f15b763dc680bc672a610b77c7a7
tar xvzf  gearman-2.0.2.tar.gz
python setup.py install

 

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(['192.168.0.181:4730'])  
new_worker.register_task("echo", task_callback)  
new_worker.work()

 

client.py

from gearman import GearmanClient

new_client = GearmanClient(['192.168.0.181:4730'])
current_request = new_client.submit_job('echo', 'foo')
new_result = current_request.result
print new_result

 

注:我的本机IP是192.168.0.181,gearman server端默认开启端口4730

 

启动worker:

[root@centos-181 demo]# python worker.py
Job started
foo

 

启动client,在另外一个终端

[root@centos-181 demo]# python client.py 
foo
 

 

 

参考:

http://pypi.python.org/pypi/gearman/

http://timyang.net/linux/gearman-monitor/

http://blog.csdn.net/robby213/article/details/6437739

 

  • 大小: 3.1 KB
分享到:
评论
1 楼 liuxuejin 2013-06-19  
兄弟我请教一个问题 python+ GearMan 你们用在生产环境了么??

相关推荐

    Gearman安装相关资源

    下面将详细介绍 Gearman 的安装及相关资源。 在 Gearman 的安装过程中,通常会涉及以下几个步骤: 1. **下载源码**:从描述中看到提供了两个版本的 Gearman 源码包,分别是 `gearmand-1.1.12.tar.gz` 和 `gearman-...

    Gearman环境搭建资料

    ### 第二步:构建并安装Gearman服务器 1. 解压Gearman源代码: ```bash tar -zxvf gearmand-1.1.12.tar.gz cd gearmand-1.1.12 ``` 2. 配置和编译源代码,确保链接了前面安装的libevent和libuuid: ```bash ...

    GearMAN讲解及所带来的变革

    使用方法上,GearMAN通过定义Worker和Client的角色和职责来实现任务的分发与执行。同步调用会阻塞等待结果返回,异步调用则在任务分发后立即返回,由Job服务器根据负载情况来分配任务。此外,GearMAN还支持分优先级...

    gearman-0.5.0.tgz(在使用)

    1. **安装与配置**:首先,你需要解压 `gearman-0.5.0.tgz` 文件,使用 `tar -zxvf gearman-0.5.0.tgz` 命令。然后,进入解压后的目录,通过 `./configure` 进行配置,`make` 编译,最后使用 `sudo make install` ...

    gearman-1.0.2.tgz

    通过解析此文件,可以了解 Gearman 1.0.2 的构建和安装过程。 2. **gearman-1.0.2**:这是一个目录,其中包含了 Gearman 1.0.2 版本的所有源代码文件。这些文件可能包括 C 或 C++ 源代码、头文件、Makefile、配置...

    gearman安装包 rpm

    如果没有mysql客户端,需要安装mysql客户端 yum install -y libevent-devel 上传gearman.zip,解压unzip gearman.zip rpm -ivh uuid-1.5.1-3.el5.x86_64.rpm rpm -ivh libgearman-1.1.8-2.el5.x86_64.rpm rpm -...

    Laravel开发-laravel-gearman-rpc

    理解 Gearman 的工作原理和如何在 Laravel 中使用它,对于构建高可用性和可扩展性的 Web 应用至关重要。在实际开发中,要根据项目需求灵活运用 Gearman 的特性,比如利用 Gearman 的优先级、延迟任务等功能,以满足...

    PyPI 官网下载 | python-libgearman-0.10.5.tar.gz

    Python-libgearman库提供了Python语言对Gearman协议的完整支持,包括客户端和工人(worker)的角色,使得Python程序可以作为Gearman服务器的客户端提交任务,或者作为处理任务的工人。这个库的版本0.10.5是在PyPI...

    Gearman分享PDF

    Gearman使用起来简单快捷,它经过C语言重写,支持多种编程语言,包括Python和PHP。它的工作方式是客户端将任务提交给Gearman任务服务器,然后服务器根据负载情况和工作节点的状态来分配任务给空闲的工作节点去执行。...

    java-gearman-service-0.6.6.jar gearman java调度工具包

    使用Java Gearman Service 0.6.6,开发者可以轻松地在Java项目中集成Gearman工作队列,提升系统的处理能力和响应速度。在实际应用中,这个工具包特别适用于那些需要处理大量并发请求或者需要离线处理的场景,例如...

    PyPI 官网下载 | python_libgearman-0.0.2-py2.6-linux-x86_64.egg

    在Python中,`python_libgearman`可能提供了客户端和服务器端的API,允许开发者注册任务,提交任务到Gearman服务器,以及接收处理结果。使用这个库,开发者可以编写分布式应用,将任务分发到多台机器上并行处理,...

    gearman-0.8.0.tgz

    用户需要按照文档指示进行编译和安装,配置文件中可能包含了编译选项和依赖库的信息。 5. **使用场景**: - **大数据处理**:在处理大量数据时,齿轮人可以将任务分解并分发到多台服务器上,加速计算过程。 - **...

    pecl-gearman:libgearmanPHP包装器

    libgearman是Gearman的C语言客户端和服务器库。它提供了一系列的API函数,用于连接Gearman服务器,提交任务,接收任务结果,以及管理Gearman作业队列。libgearman库允许开发者在不关心具体实现细节的情况下,轻松地...

    Python中包的用法及安装

    以上介绍的这些Python包都是在实际开发中常用的工具,了解它们的基本用途和安装方法对于提升开发效率和解决问题具有重要意义。如果你对这些包的应用有更多的兴趣,可以继续探索它们的文档和示例,进一步深化理解。

    python基于json文件实现的gearman任务自动重启代码实例

    在Python编程中, Gearman 是一个分布式任务队列系统,常用于处理异步任务和负载均衡。本实例探讨了如何利用Python和JSON文件来实现 Gearman 任务的自动重启功能,确保任务在失败时能够得到恢复。以下是相关知识点的...

    Gearman::XS在Centos下的编译安装方法

    记住,Gearman支持多种语言的客户端和服务器,包括C、Python、Perl、Java等。选择使用Perl是因为其API功能相对完整。确保你的Gearman服务器已经启动并且配置正确,这样你就可以利用Gearman::XS在你的Perl应用程序中...

    gearmand-1.1.5.tar.gz

    3. **配置脚本**:`configure`脚本是基于Autoconf的,用于检查系统环境并生成Makefile,以便在不同的操作系统上编译和安装Gearmand。 4. **Makefile.am**:这是Automake的配置文件,定义了编译规则和目标。 5. **...

    gearmand-1.1.17.tar.gz

    总之,齿轮人是一个强大的分布式任务队列工具,它的源码安装过程相对简单,且支持多种编程语言的客户端,使得在各种环境中集成和使用都非常灵活。通过合理的配置和优化,齿轮人可以在复杂分布式系统中发挥重要作用,...

    开源项目-appscode-g2.zip

    Gearman是一个通用的工作队列系统,它允许应用程序将任务分发到网络中的其他机器上进行异步处理,从而提高系统的并行性和可扩展性。G2作为Gearman的一个现代化实现,旨在提供更高效、更稳定的解决方案。 在了解G2...

Global site tag (gtag.js) - Google Analytics