我有一个基于 Web 的脚本,它在 Gearman 中创建了一个后台作业(执行 SSH 命令),这是成功的。但是,当我尝试在后续的 Web 请求中检索作业的状态时,我也无法做到。
我的工作创造看起来也很相似:
import gearman
gm = gearman.GearmanClient( ['127.0.0.1'] )
job = gm.submit_job( 'ssh_execute', 'shell-command', background = True )
从这里我可以得到工作handle
和unique
ID,这些在请求之间传递。这是成功的,作业完成。
根据谷歌搜索和堆栈溢出,获得工作状态的建议是:
import gearman
gm = gearman.GearmanClient( ['127.0.0.1'] )
job = gearman.job.GearmanJob( gm, 'handle', 'ssh_execute', 'unqiue id', None )
req = gearman.job.GearmanJobRequest( job )
但是,这失败了,并且无法检索有关作业的任何信息(即状态始终为UNKNOWN
)。job
来自and的示例对象req
:
<GearmanJob connection/handle=(<gearman.client.GearmanClient object at 0x10f42db50>, 'H:proxy:1'), task=ssh_execute, unique=ce96e33721d5f3ef5394502b8c6621fa, data=None>
<GearmanJobRequest task='ssh_execute', unique='ce96e33721d5f3ef5394502b8c6621fa', priority=None, background=True, state='UNKNOWN', timed_out=False>
我在 Ubuntu 12.04 上使用Yelp Gearman库和0.27。gearman-job-server