我嘗試使用背景任務的工人並從工作人員獲取數據進度。 在文檔中我看到的方法: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}
我如何能正常得到這個數據?因爲我的後臺任務將工作幾個小時,並在消息中發送有關我們狀態的信息。