有关gearman的介绍,可以参见本博客之前的文章。
gearman的Python客户端使用蛮简单的。具体方法参见:http://pythonhosted.org//gearman/library.html文章源自运维生存时间-https://www.ttlsa.com/distributed-processing-systems/gearman-python-example/
worker:
from gearman import GearmanWorker from var_dump import var_dump import json def worker_ttlsa.com(gearman_worker,job): var_dump(job.data) param = json.loads(job.data) sleep = param['sleep'] return str(sleep) def main(): gw = GearmanWorker(['127.0.0.1:4730']) gw.register_task("worker_ttlsa.com", worker_ttlsa.com) gw.work() if __name__ == "__main__": main()
client:
from gearman import GearmanClient from var_dump import var_dump import json def main(): gc = GearmanClient(['127.0.0.1:4730']) param = {'msg':'www.ttlsa.com', 'sleep':5} request = gc.submit_job('worker_ttlsa.com',json.dumps(param)) var_dump(request.result) if __name__ == "__main__": main()
注意:worker一定要有retrun,且返回的内容必须是字符串。否则报下面的错误。文章源自运维生存时间-https://www.ttlsa.com/distributed-processing-systems/gearman-python-example/
TypeError: Expecting byte string, got <type 'NoneType'>文章源自运维生存时间-https://www.ttlsa.com/distributed-processing-systems/gearman-python-example/
查看状态:
# telnet 127.0.0.1 4730 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. workers 36 127.0.0.1 - : 35 127.0.0.1 - : worker_ttlsa.com . status worker_ttlsa.com 0 0 1 .
status输出分4个部分:已注册的任务,正在运行的任务,队列中的任务,可用的worker。文章源自运维生存时间-https://www.ttlsa.com/distributed-processing-systems/gearman-python-example/ 文章源自运维生存时间-https://www.ttlsa.com/distributed-processing-systems/gearman-python-example/
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
评论