360ITO技术社区
  • 首页
  • 文章
  • 快讯
  • 讨论
  • 问答
  • 小贴士
  • 代码块
  • 开源
  • 老论坛
登录 | 注册

360ITO技术社区  > 文章

订阅文章

编译安装Gearman、python简单测试

无相 发布于 8年前 ( comment 0条评论  查看:7410  收藏:0 )

Gearman是开源、轻量级的任务分发程序框架,方便开发分布式的任务处理(计算)程序,Gearman支持多种后端数据的存储。
Gearman有c和java两个版本,支持多种语言的客户端
       
一、安装依赖库

sudo yum install boost-devel libevent-devel sqlite-devel libuuid-devel

编译Gearman是必须要有mysql开发库的
       
二、编译安装
./configure --with-mysql=/opt/db/Percona-Server-5.5.21-rel25.0/bin/mysql_config --prefix=/opt/gearmand-0.33

会列出已经支持的数据存储库

* Building with libsqlite3  yes
 * Building with libdrizzle  no
 * Building with libmemcached no
 * Building with libpq    no
 * Building with tokyocabinet no
 * Building with libmysql   yes
编译安装
make && make install
三、编译中出现一些小问题
最新版的gearmand-0.34无法安装成功,会提示:
libgearman-server/plugins/queue/mysql/queue.cc:49:25: fatal error: mysql/mysql.h: No such file or directory
但是已经认出MySQL:
checking if MySQL version is >= 5.0... yes

checking for mysqld... /opt/db/Percona-Server-5.5.21-rel25.0/bin/mysqld
限于时间紧迫,暂时使用gearmand-0.33
       
四、启动gearmand
./gearmand -L 127.0.0.1 -p 7003

五、编写测试代码(python)
先安装python-gearman
easy_install gearman

1、编写任务工作者:worker.py

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# file: worker.py
           
import os  
import gearman  
import math  
              
class CustomGearmanWorker(gearman.GearmanWorker):  
    def on_job_execute(self, current_job):  
        print "开始......"
        print "工作中......"
        print '结束'
           
        return super(CustomGearmanWorker, self).on_job_execute(current_job)  
            
def task_callback(gearman_worker, job):  
    print job.data  
    return job.data  
            
new_worker = CustomGearmanWorker(['127.0.0.1:7003'])  
new_worker.register_task("echo", task_callback)  
new_worker.work()

2、启动worker.py

python worker.py

可以启动多个,分布在不同的机器上

3、编写测试端client.py

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# file: client.py
           
from gearman import GearmanClient  
            
new_client = GearmanClient(['127.0.0.1:7003'])  
current_request = new_client.submit_job('echo', 'foo')  
new_result = current_request.result  
print new_result

4、测试一下

python client.py

可以看到worker输出信息了

使用体会

1、编写异步的任务分发程序简单方便
2、测试中发现,任务的分发不是很均匀(调度算法不好?)

0 有用 0 无用
本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:编译安装Gearman、python简单测试
原文地址:http://www.360ito.com/article/50.html
360ito.com
分布式处理框架 Python Gearman

共有0个评论 我要评论»

按时间排 按有用数排 按支持数排

网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。

请尽量让自己的回复能够对别人有帮助

1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止

热门标签

  • android 20
  • Flash 15
  • Linux 12
  • 游戏 12
  • Python 11
  • 工作笔记 11
  • 社交游戏 7
  • delphi 5
  • jquery 5
  • git 4
  • Centos 4
  • 编程 4
  • 谷歌 4
  • 开发者 3
  • C/C++ 3
  • JavaScript 3
  • 移动互联网 2
  • HTML5 2
  • uWSGI 2
  • 网站 2

相关文章

周热点

月热点

  • 3周前qifei233333333333 (208)
  • 2周前qifei233333333333 (176)
  • 1周前qifei233333333333 (99)
Copyright ©2011-2012 360ITO技术社区 All Rights Reserved. | 关于 | 联系我们 | 杭州精创信息技术有限公司 浙ICP备09019653号-26|
▲