【发布时间】:2018-04-14 23:19:03
【问题描述】:
我在服务器上有一个 django web 项目。我希望它运行一个 matlab 代码来生成一些文本文件(稍后将使用)。这是我的代码:
if(request.method == "POST"):
run_octave(Dataset,is_multiclass,require_mapper,mapper,require_aspect_ratio,aspect_ratio)
return redirect('meta2db.views.meta2db')
def run_octave(dataset,is_multiclass,require_mapper,mapper,require_aspect_ratio,aspect_ratio):
origWD = os.getcwd()
args = ["octave", "dbEval.m",dataset,is_multiclass,require_mapper,\
mapper,require_aspect_ratio,aspect_ratio]
os.chdir(os.path.join(os.path.abspath(sys.path[0]), "../scripts/"))
#subprocess call here
process = subprocess.Popen(args, stdout=subprocess.PIPE)
for line in process.stdout:
time.sleep(0.5)
Group("eval_status").send({"text": line.decode('utf-8')},immediately=True)
if process.poll() is None:
process.kill()
else:
print(process.communicate())
os.chdir(origWD)
我使用一个发布请求来运行带有子进程调用的倍频程代码。然而,matlab 代码需要一段时间才能完成,并且总是使客户端超时,这是不可接受的。我的问题是如何以另一种方式解决此类问题。发布请求似乎不是一个好的解决方案。
【问题讨论】: