这篇是我访问量最大的博文。
大家热情这么高。我想做个详细的说明。
work.py
import gearman
#连接 gearman 服务端
gm_worker = gearman.GearmanWorker(['127.0.0.1:4730'])
#定义函数
def task_listener_reverse(gearman_worker, gearman_job):
#注册函数
gm_worker.register_task('reverse', task_listener_reverse)
# 运行
gm_worker.work()
后台运行work python work.py &
client.py
import gearman
#连接gearman客户端
gm_client = gearman.GearmanClient(['127.0.0.1:4730'])
#调用work的方法
completed_job_request = gm_client.submit_job("reverse", "arbitrarybinary data")
#打印结果
print completed_job_request.result
咱们下面来做个复杂点的
sorry 我的代码是用vimi敲的。。分行。
在同一语言里面你可以直接交互。
但是gearman跨语言的是后走的json格式。
所以呢,你最好还是将你传递的值 用json处理
import gearman,sys,json
2 from lxml.html.soupparser import fromstring
3 gm_worker = gearman.GearmanWorker(['127.0.0.1:4730'])
4
5 # See gearman/job.py to see attributes on the GearmanJob
6 # Send back a reversed version of the 'data' string
7 def task_listener_xpath(gearman_worker, gearman_job):
8 #print gearman_job.data
9 ##return json.dumps('data')
10 doc = json.loads(gearman_job.data)
11 root = fromstring(doc["content"])
12 find_text = root.xpath(doc["xpath"])
13 text = find_text[0].text
14 print "Title is : " + find_text[0].text
15 return json.dumps(text)
16
17
18 # gm_worker.set_client_id is optional
19 #gm_worker.set_client_id('your_worker_client_id_name')
20 gm_worker.register_task('xpath', task_listener_xpath)
21
22 # Enter our work loop and call gm_worker.after_poll() after each time we timeout/see socket activity
23 gm_worker.work()