2017-03-20 4 views
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 
+0

私は 'job_results'リストが表示されません。 'self.job_result'を意味しますか? –

+0

申し訳ありません。私はそれをちょっと消毒するためにコードを編集した。確かにself.job_resultです。 – DrTchocky

+1

'sh:1:mv:not found'はシェルからの出力です。違反しているコードは、HOSTの位置が0になっていてもかまいません。おそらくあなたの$ PATHが壊れているかもしれません。 'print"を見てください。HOST_JOB_KEYS%s "%host_job_keys'多分、いくつのホストジョブキーがありますか?あなたは 'sh:1:mv:not found'を内容として200を返していますか? –

答えて

0

これは/binmvや他のコマンドが認識されていない非常に複雑な問題であることが判明しました。この問題を回避するために、我々はちょうど明示され、代わりに/bin/mvを使用しました。この問題は、systemctlのインスタンス化の複雑さの結果として切り詰められると考えています。

関連する問題