rq.job.Job 返回'sh: 1: mv: not found'错误



我目前有一个主python脚本,它可以在远程主机上启动6个作业,并轮询这些作业是否在很长一段时间内完成(通常是几天(。但是,在下面的代码中,self.job_results列表中的第一个元素始终是"sh:1:mv:未找到"。但是,6 个作业值始终在该列表中(例如,列表中有 7 个元素,应该只有 6 个(。似乎rq.job.Job正在返回此值;知道为什么吗?

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
事实证明,这是一个

非常复杂的问题,无法识别/bin中的mv和其他命令。为了解决这个问题,我们只是明确地使用了/bin/mv。我们认为这个问题是由于 systemctl 实例化的复杂性而出现的

最新更新