我尝试使用背景任务的工人并从工作人员获取数据进度。 在文档中我看到的方法:send_job_data和send_job_status,但与背景第一种方法不工作(我没有看到job.data_updates中的数据),但job.status中的状态更改。Python Gearman从后台任务中获取数据
我使用此代码测试人员:从Gearman的进口GearmanWorker 进口时间
worker = GearmanWorker(['192.168.1.79:4730'])
def long_task(work, job):
work.send_job_data(job, 'long task')
work.send_job_status(job, 0, 3)
time.sleep(60)
work.send_job_data(job, 'long task2')
work.send_job_status(job, 1,3)
time.sleep(120)
work.send_job_status(job,3,3)
return "COMPLETE ALL"
worker.register_task('pool', long_task)
worker.work()
而从客户端验证码: 从Gearman的进口GearmanClient 客户端= GearmanClient(['192.168.1.79 :4730' ])
此代码(阻塞)工作正常:
而这个客户端无法正常工作正常(没有任务更新状态,并没有得到数据/结果):(
In [10]: pool = client.submit_job('pool', '', background=True)
In [11]: pool = client.get_job_status(pool)
In [12]: pool.status
Out[12]:
{'denominator': 3,
'handle': 'H:dhcp94:23',
'known': True,
'numerator': 0,
'running': True,
'time_received': 1322755604.695123}
In [13]: pool.data_updates
Out[13]: deque([])
In [14]: pool = client.get_job_status(pool)
In [15]: pool.data_updates
Out[15]: deque([])
In [16]: pool.status
Out[16]:
{'denominator': 0,
'handle': 'H:dhcp94:23',
'known': False,
'numerator': 0,
'running': False,
'time_received': 1322755863.306605}
我如何能正常得到这个数据?因为我的后台任务将工作几个小时,并在消息中发送有关我们状态的信息。