本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:编译安装Gearman、python简单测试
原文地址:http://www.360ito.com/article/50.html
Gearman是开源、轻量级的任务分发程序框架,方便开发分布式的任务处理(计算)程序,Gearman支持多种后端数据的存储。
Gearman有c和java两个版本,支持多种语言的客户端
一、安装依赖库
sudo yum install boost-devel libevent-devel sqlite-devel libuuid-devel
./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
libgearman-server/plugins/queue/mysql/queue.cc:49:25: fatal error: mysql/mysql.h: No such file or directory
checking if MySQL version is >= 5.0... yes checking for mysqld... /opt/db/Percona-Server-5.5.21-rel25.0/bin/mysqld
./gearmand -L 127.0.0.1 -p 7003
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个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止