0
私は現在、リモートホストで6つのジョブを起動し、ジョブが完了したかどうかをポーリングするマスターPythonスクリプトを持っています日、通常)。しかし、私のコードでは、self.job_resultsリストの最初の要素は常に '' sh:1:mv:not found 'です。ただし、6つのジョブの値は常にそのリストに含まれています(リストに7つの要素があり、6つしかないなど)。 rq.job.Job
がこの値を返しているようです。どんな考え? rq.job.Jobが 'sh:1:mv:not found'エラーを返しました
hosts = HOSTS.keys()
job_ids = []
for host in hosts:
r = requests.get(HOSTS[host] + 'launch_jobs', auth=('admin', 'secret'))
job_ids.append(r.text)
host_job_dict = dict(zip(hosts, job_ids))
print "HOST_JOB_DICT: %s " % host_job_dict
launch_time = datetime.datetime.now()
self.job_result = []
complete = False
status = [False]*len(hosts)
host_job_keys = host_job_dict.keys()
while not complete:
check_time = datetime.datetime.now()
time_diff = check_time - launch_time
if time_diff.seconds > JOB_TIMEOUT:
sys.exit('Job polling has lasted 10 days, something is wrong')
print "HOST_JOB_KEYS %s " % host_job_keys
for idx, key in enumerate(host_job_keys):
if not status[idx]:
host = HOSTS[key]
j_id = host_job_dict[key]
req = requests.get(host + 'check_job/' + j_id, auth=('admin', 'secret'))
if req.status_code == 202:
continue
elif req.status_code == 200:
self.job_result.append(req.json()['results'].encode('ascii').split())
status[idx] = True
complete = all(status)
time.sleep(1)
物事のサーバー側の
...@app.route("/check_job/<job_key>", methods=['GET'])
@requires_auth
def check_job(job_key):
job = Job.fetch(job_key, connection=conn)
if job.is_finished:
data = job.return_value
json_data = jsonify({"results": data})
# return Response(response=json_data, status=200, mimetype="application/json")
return json_data
elif job.status == 'failed':
return "Failed", 202
else:
return "Not yet", 202
私は 'job_results'リストが表示されません。 'self.job_result'を意味しますか? –
申し訳ありません。私はそれをちょっと消毒するためにコードを編集した。確かにself.job_resultです。 – DrTchocky
'sh:1:mv:not found'はシェルからの出力です。違反しているコードは、HOSTの位置が0になっていてもかまいません。おそらくあなたの$ PATHが壊れているかもしれません。 'print"を見てください。HOST_JOB_KEYS%s "%host_job_keys'多分、いくつのホストジョブキーがありますか?あなたは 'sh:1:mv:not found'を内容として200を返していますか? –